使用createNotFoundException()时,Symfony2未显示错误

时间:2014-10-03 01:07:54

标签: symfony

我正在使用Symfony2,并且在调用createNotFoundException()时它没有显示错误。 它只是显示一个空白的白页。

这是我的代码抛出异常:

if(!$product){
     throw $this->createNotFoundException('The product does not exist');
}

我班级的标题使用以下内容:

 <?php    

 namespace WIC\ProductBundle\Controller;
 use WIC\SecurityBundle\Controller\AuthorizationController;
 use WIC\ProductBundle\Entity\Product;

 use Doctrine\Tests\Common\Annotations\Null;
 use Symfony\Component\HttpFoundation\Request;
 use Symfony\Bundle\FrameworkBundle\Controller\Controller;
 use Symfony\Component\Validator\Constraints as Assert;
 use Doctrine\ORM\Tools\Pagination\Paginator;

 use Symfony\Component\Security\Acl\Domain\ObjectIdentity;
 use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
 use Symfony\Component\Security\Core\Exception\AccessDeniedException;
 use Symfony\Component\HttpFoundation\JsonResponse;
 use Symfony\Component\HttpFoundation\Response;
 use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
 use Sensio\Bundle\FrameworkExtraBundle\Configuration\Method;
 use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;

 class ProductController extends AuthorizationController
 {
     /**
      * @Route("/foo/", name="foo_bar")
      * @Template()
      */
     public function fooAction(Request $request)
     {
         $record = $em->getRepository('WICProductBundle:Product')->find(100000);
         if(!$record){
             throw new NotFoundHttpException("Test, This Is Not Valid");
         }
     }
 }

现在我也遇到了这个错误:

  

ClassNotFoundException:尝试从/Applications/MAMP/htdocs/ffss/src/WIC/ProductBundle/Controller/ProductController.php第43行中的命名空间“WIC \ ProductBundle \ Controller”加载类“createNotFoundException”。你需要“使用“来自另一个名称空间?”

     

[03-Oct-2014 04:11:32 Europe / Paris] PHP致命错误:在/ Applications / MAMP / htdocs / ffss / src / WIC / ProductBundle /中找不到类'WIC \ ProductBundle \ Controller \ createNotFoundException'第43行的Controller / ProductController.php   [03-Oct-2014 04:12:50 Europe / Paris] PHP致命错误:/ Applications / MAMP / htdocs / ffss / src / WIC / ProductBundle / Controller / ProductController中找不到类'WIC \ ProductBundle \ Controller \ createNotFoundException'第43行的.php

我将这个名称空间切换到了这一点,并且就php日志错误而言,一切正常,仍然无法拉出symfony错误页面。

 use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;

所有其他错误都显示为btw,只显示任何异常错误。谢谢你的帮助!

3 个答案:

答案 0 :(得分:0)

对于您的新错误,而不是

throw new createNotFoundException("Test, This Is Not Valid");

你应该使用

throw new NotFoundHttpException("Test, This Is Not Valid");

我仍然没有为你原来的问题找到足够的背景。

答案 1 :(得分:0)

当发生php致命错误时,它不会为symfony创建任何事件来处理。为了在您的页面上出现php致命错误,您需要启用调试,这使symfony ro注册了一个关闭功能。您使用的是哪个版本的symfony?如果你使用2.2以上的symfony版本来启用调试只需要放置$ kernel = new AppKernel(&#39; dev&#39;,true);是不足够的。在它上面放置下面的行,以正确显示任何PHP错误(空白页的最可能的原因)。 \的Symfony \元器件\调试\调试::启用(1);  希望这有帮助

答案 2 :(得分:0)

从Symfony网站(http://symfony.com/doc/current/book/controller.html#managing-errors-and-404-pages)尝试教程时遇到类似的问题。

但后来我注意到我忘了用Controller扩展我的班级

class HelloController extends Controller

之后我能够显示自定义404错误。