#symfony1 #doctrine #generator
#symfony1 #доктрина #генератор
Вопрос:
В приложении symfony у меня есть список модулей, которые построены на генераторе doctrine admin. Поскольку приложение встроено в другую систему, мне нужно заменить все вызовы redirect() в классе action (из sfAction.class.php ) Я могу вставить это в каждый модуль, но есть ли центральное место, которое я мог бы использовать?
Оригинальное перенаправление (symfony/lib/action/sfACtion.class.php )
public function redirect($url, $statusCode = 302)
{
// compatibility with url_for2() style signature
if (is_object($statusCode) || is_array($statusCode))
{
$url = array_merge(array('sf_route' => $url), is_object($statusCode) ? array('sf_subject' => $statusCode) : $statusCode);
$statusCode = func_num_args() >= 3 ? func_get_arg(2) : 302;
}
$this->getController()->redirect($url, 0, $statusCode);
throw new sfStopException();
}
мое изменение
function redirect($url, $statusCode = 302){
if (is_object($statusCode) || is_array($statusCode)){
$url = array_merge(array('sf_route' => $url), is_object($statusCode) ? array('sf_subject' => $statusCode) : $statusCode);
$statusCode = func_num_args() >= 3 ? func_get_arg(2) : 302;
}
if (is_array($url)){
$use_url = $this->getController()->genUrl($url, true);
}else if (substr($url,0,1) == '@'){
$use_url = $this->getController()->genUrl($url, true);
}else{
$use_url = $url;
}
$url = NZGBCTools::makeUriJoomlaCompatible($use_url);
$this->getController()->redirect($url, 0, $statusCode);
throw new sfStopException();
}
Ответ №1:
Создайте новый класс, который расширяет sfActions, и сделайте так, чтобы ваши классы действий расширяли его. Таким образом, у вас будет центральное место, которое вам нужно.
Комментарии:
1. Спасибо, это сработает, я искал «symfony place», но это сработает для меня.
2. Это «symfony place» настолько, насколько это вообще возможно. Многие вещи можно легко сделать с помощью расширения базового класса symfony. Потрясающий пример смотрите symfony-project.org/more-with-symfony/1_4/en /…