在哪里为应用程序的所有模块放置redirect()

时间:2011-06-13 05:30:11

标签: symfony1 doctrine generator

在symfony应用程序中,我有一个基于doctrine admin生成器构建的模块列表。因为应用程序嵌入在另一个系统中,我需要替换动作类中的所有redirect()调用(来自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 个答案:

答案 0 :(得分:0)

创建一个扩展sfActions的新类,并使您的操作类扩展它。通过这种方式,您将获得所需的中心位置。