Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/293.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/magento/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Can';无法使异常控制器工作-Symfony2_Php_Symfony - Fatal编程技术网

Php Can';无法使异常控制器工作-Symfony2

Php Can';无法使异常控制器工作-Symfony2,php,symfony,Php,Symfony,在控制器内不执行任何操作将返回“未捕获异常”Symfony\Component\Routing\exception\ResourceNotFoundException“in…”错误。不确定这是否正确,或者这是否是另一个问题。我希望它能像往常一样行动 我只需要这样做,它会显示一个指定的路由,就像我去domain.com/page时一样 我试过这个: namespace etc... use Symfony\Bundle\FrameworkBundle\Controller\Controller;

在控制器内不执行任何操作将返回“未捕获异常”Symfony\Component\Routing\exception\ResourceNotFoundException“in…”错误。不确定这是否正确,或者这是否是另一个问题。我希望它能像往常一样行动

我只需要这样做,它会显示一个指定的路由,就像我去domain.com/page时一样

我试过这个:

namespace etc...

use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Bundle\TwigBundle\Controller\ExceptionController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpKernel\HttpKernel;
use Symfony\Component\HttpKernel\Exception\FlattenException;
use Symfony\Component\HttpKernel\Log\DebugLoggerInterface;
use Symfony\Component\HttpFoundation\Response;

class MyExceptionController extends ExceptionController
{
    public function showAction(Request $request, FlattenException $exception, DebugLoggerInterface $logger = null, $format = 'html')
    {


    }
}
…但是得到这个错误:

   $httpKernel = $this->container->get('kernel');
   $response = $httpKernel->forward('AcmeMyBundle:Default:pageAction');
   $this->setResponse(new Response($response));

你的代码看起来和我昨天做的类似。我想获取所有NotFoundHttpException异常,并尝试将它们转发到默认控制器。我通过这样一个异常侦听器实现了这一点:

Call to a member function get() on a non-object in...
<?php

namespace Acme\MyBundle\Listener;

use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
use Symfony\Component\HttpKernel\Event\GetResponseForExceptionEvent;

class NotFoundHttpExceptionListener
{
    protected $container;

    public function setContainer($container)
    {
        $this->container = $container;
    }

    public function onKernelException(GetResponseForExceptionEvent $event)
    {
        $exception = $event->getException();
        if ($exception instanceof NotFoundHttpException) {
            $httpKernel = $this->container->get('http_kernel');

            $response = $httpKernel->forward(
                'AcmeMyBundle:Controller:action',
                array(
                    'uri'  => $_SERVER['REQUEST_URI'],
                )
            );

            $response->headers->set('X-Status-Code', '200');
            $event->setResponse($response);
            $event->stopPropagation();
        }
    }
}

你的代码看起来和我昨天做的类似。我想获取所有NotFoundHttpException异常,并尝试将它们转发到默认控制器。我通过这样一个异常侦听器实现了这一点:

Call to a member function get() on a non-object in...
<?php

namespace Acme\MyBundle\Listener;

use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
use Symfony\Component\HttpKernel\Event\GetResponseForExceptionEvent;

class NotFoundHttpExceptionListener
{
    protected $container;

    public function setContainer($container)
    {
        $this->container = $container;
    }

    public function onKernelException(GetResponseForExceptionEvent $event)
    {
        $exception = $event->getException();
        if ($exception instanceof NotFoundHttpException) {
            $httpKernel = $this->container->get('http_kernel');

            $response = $httpKernel->forward(
                'AcmeMyBundle:Controller:action',
                array(
                    'uri'  => $_SERVER['REQUEST_URI'],
                )
            );

            $response->headers->set('X-Status-Code', '200');
            $event->setResponse($response);
            $event->stopPropagation();
        }
    }
}

对中的非对象调用成员函数get()是一种典型的情况,当您对本应为对象但为空的对象调用函数时。请给我们更多和完整的信息,以帮助我们。然后忽略它。我只需要知道如何在异常控制器中访问$controller->forward$此->容器->get()显然不起作用。
中的非对象上调用成员函数get(),这是一种典型的情况,当您在
$something
上调用函数时,它应该是一个对象,但却为
null
。请给我们更多和完整的信息,以帮助我们。然后忽略它。我只需要知道如何在异常控制器中访问$controller->forward$此->容器->get()显然不起作用。http\U内核上的方法“forward”已被弃用。有什么想法吗?好的,因为方法“forward”实际上已经被弃用了,所以你可以这样做:$url=$this->container->get('router')->generate('main_homepage')$response=new\Symfony\Component\HttpFoundation\RedirectResponse($url);http_内核上的方法“forward”已弃用。有什么想法吗?好的,因为方法“forward”实际上已经被弃用了,所以你可以这样做:$url=$this->container->get('router')->generate('main_homepage')$response=new\Symfony\Component\HttpFoundation\RedirectResponse($url);