Symfony 2重定向出私有功能

Nex*_*tar 2 php symfony

在我的应用程序中,我使用init函数初始化一个动作,init函数验证用户输入(例如用户正在寻找一个不存在的产品 - > init函数应该将他重定向到一个errorpage"产品......未找到")

 /**
 * @Route("/route/{var}", name="xyzbundle_xyz_index")
 * @Template("VendorXyzBundle:xyz:index.html.twig")
 */
public function indexAction ($var) 
{
    $xyz = $this->initxyz($var);
    ...
    .. more code
    .              
} 
Run Code Online (Sandbox Code Playgroud)

并且在此控制器中有一个私有函数应该验证来自url给定参数,如果它是错误的(在数据库等中不存在),私有函数应该重定向

private function init($var)
{
    if($this->databasesearchforexyz($var)){
        // redirect to Errorpage (No xyz found named ...)
        return $this->redirect($this->generateUrl('xyz_error_...'));
    }
    if($this->checksomethingelse($var)){
        // redirect to some other error page
    }
}
Run Code Online (Sandbox Code Playgroud)

请注意,这些不是我真正的方法/变量/路径/等.名.

问题是,它不是重定向.

ale*_*x88 5

您可以检查init函数是否返回实际响应,然后您可以直接从主代码返回它.像这样:

public function indexAction ($var) 
{
    $xyz = $this->initxyz($var);
    if ($xyz instanceof \Symfony\Component\HttpFoundation\Response) {
        return $xyz;
    }
    ...
    .. more code
    .              
} 
Run Code Online (Sandbox Code Playgroud)

顺便说一句,如果您只需要检查数据库存在,您可以使用symfony的paramconverter