php – 扩展Symfony2控制器解析器

开发技术 作者: 2024-07-05 09:10:01
我正在创建一个bundle,如果request是Ajax请求,它可以将fooAction重命名为fooAjaxAction. 正如 that question的答案所说,我必须扩展控制器解析器类. 如果我更改config.yml中的controller_resolver.class,我有一个ResourceNotFoundException.但如果我不这样做,我没有任何错误(但没有覆盖,所以这不是
我正在创建一个bundle,如果request是Ajax请求,它可以将fooAction重命名为fooAjaxAction.
正如 that question的答案所说,我必须扩展控制器解析器类.
如果我更改config.yml中的controller_resolver.class,我有一个ResourceNotFoundException.但如果我不这样做,我没有任何错误(但没有覆盖,所以这不是我想要的)

我的问题是:如何注册我的新控制器解析器并使用它?我是对的 ?错了吗?

这就是我所做的:

您可以在packagist中找到我的Bundle进行测试并通过以下方式下载:

composer需要“/ prefix-bundle”:“dev-dev”

在AppKernel.PHP中激活它:

<?PHP 
// AppKernel.PHP
new \PrefixBundle\PrefixBundle()

配置

# App/Config/config.yml
parameters:
    controller_resolver.class: PrefixBundle\Component\Controller\ControllerResolver

所以这是我的自定义控制器.

<?PHP 
namespace \PrefixBundle\Component\Controller;

use Symfony\Component\HttpKernel\ControllerControllerResolver as BaseControllerResolver;
use Symfony\Component\HttpFoundation\Request;

class ControllerResolver extends BaseControllerResolver
{

    public function getArguments(Request $request,$controller)
    {
        parent::getArguments($request,$controller);
    }
}

我假设这个控制器没有做任何事情,我将来会添加逻辑.

解决方法

getArguments方法中缺少返回(由于我在执行其他答案时错过了它),这意味着控制器解析器实际上没有得到任何要解析的参数.

public function getArguments(Request $request,$controller)
{
    // Should have the return..
    return parent::getArguments($request,$controller);
}
原创声明
本站部分文章基于互联网的整理,我们会把真正“有用/优质”的文章整理提供给各位开发者。本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
本文链接:http://www.jiecseo.com/news/show_38935.html