2
/**
 * @Route("/installation", name="installation")
 */
public function defaultAction()
{
    $this->checkPhpVersion();
    return $this->redirect($this->generateUrl('setdatabase'));
}

private function checkPhpVersion()
{
    if(phpversion() <= '5.5.0') 
    {
        $message = 'aaa';   
        return $this->render('myFooBundle:Bar:error.html.twig', ['message' => $message]);       
    }
}

好吧,我希望checkPhpVersion()方法中的 if 指令显示错误页面并停止以后的执行。

正在调用该指令,但似乎视图未正确呈现,因为我被重定向到 setdatabase 控制器(末尾defaultAction()),我不应该这样做。

未显示 error.html.twig 的内容。相反,如上所述,调用 setdatabase 控制器并显示其方法的视图。

怎么了?


private function checkPhpVersion()
{
    if(phpversion() <= '5.5.0') 
    {
        echo 1;
        exit();
        echo 2;
        $message = 'aaa';  
        return $this->render('myFooBundle:Bar:error.html.twig', ['message' => $message]);     
    }
}

这仍然没有任何改变。但是,删除重定向语句并将 raw 放在return array()那里,删除exit(),显示 '1' 和 '2' 整数,并根据return array()提到的一些错误。

4

2 回答 2

1

逻辑是错误的,因为您调用返回视图的函数,然后从调用者继续进行重定向(因此触发了两个操作)。

一种解决方案是按如下方式调整您的checkPhpVersion()功能:

/**
 * @Route("/installation", name="installation")
 */
public function defaultAction()
{
    if (!is_null($message = $this->checkPhpVersion()))
      return $this->render('myFooBundle:Bar:error.html.twig', ['message' => $message]);
    else
      return $this->redirect($this->generateUrl('setdatabase'));
}

private function checkPhpVersion()
{
    return phpversion() <= '5.5.0' ? 'aaa' : null;
}

如果要将视图生成留在checkPhpVersion()函数内,可以使用:

/**
 * @Route("/installation", name="installation")
 */
public function defaultAction()
{
    if(!empty($this->checkPhpVersion()))
      return new Response($content);
    else
      return $this->redirect($this->generateUrl('setdatabase'));
}

private function checkPhpVersion()
{
    if(phpversion() <= '5.5.0') 
    {
        $message = 'aaa';   
        return $this->renderView('myFooBundle:Bar:error.html.twig', ['message' => $message]);       
    }
}

请参阅:http ://symfony.com/doc/current/book/controller.html#rendering-templates

于 2013-05-24T15:47:26.027 回答
0

如果您尝试停止进一步执行,请在呈现错误页面后exit()在您的方法中使用 PHP 函数。checkPhpVersion

于 2013-05-24T15:40:40.667 回答