扩展Symfony2控制器解析器

法比恩·帕佩(Fabien Papet)

我当前正在创建一个包,如果请求是Ajax请求,则可以将fooAction重命名为fooAjaxAction。作为回答这个问题说,我不得不延长控制器解析器类。ResourceNotFoundException如果更改config.yml中的controller_resolver.class,则有一个提示。但是,如果没有,我就不会有任何错误(但是没有覆盖,所以这不是我想要的)

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

这就是我所做的:

您可以在packagist中找到我要测试的套件,并通过以下网址下载:

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);
    }
}

我假设该控制器无所作为,例如,将来我将添加逻辑。

Qooplmao

getArguments方法中没有返回值(由于我在执行其他回答时丢失了它),这意味着控制器解析器实际上没有获取任何要解析的参数。

public function getArguments(Request $request, $controller)
{
    // Should have the return..
    return parent::getArguments($request, $controller);
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章