4

我目前正在创建一个捆绑包,如果请求是 Ajax 请求,它可以将 fooAction 重命名为 fooAjaxAction。正如该问题的答案所说,我必须扩展控制器解析器类。ResourceNotFoundException如果我更改 config.yml 中的 controller_resolver.class,我有一个。但如果我不这样做,我没有任何错误(但没有覆盖,所以这不是我想要的)

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

这就是我所做的:

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

composer require "/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);
    }
}

例如,我假设这个控制器什么都不做,我将来会添加逻辑。

4

1 回答 1

5

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

public function getArguments(Request $request, $controller)
{
    // Should have the return..
    return parent::getArguments($request, $controller);
}
于 2014-08-09T11:53:23.807 回答