在 symfony 应用程序中,我有一个基于条令管理生成器构建的模块列表。因为该应用程序嵌入在另一个系统中,所以我需要替换操作类中的所有重定向()调用(来自 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();
}
创建一个扩展 sfActions 的新类,并使您的操作类扩展它。这样您就可以拥有所需的中心位置。