php – 扩展Symfony2控制器解析器
发布时间:2020-12-13 17:31:09 所属栏目:PHP教程 来源:网络整理
导读:我正在创建一个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 PrefixBundlePrefixBundle() 配置 # App/Config/config.yml parameters: controller_resolver.class: PrefixBundleComponentControllerControllerResolver 所以这是我的自定义控制器. <?php namespace PrefixBundleComponentController; use SymfonyComponentHttpKernelControllerControllerResolver as BaseControllerResolver; use SymfonyComponentHttpFoundationRequest; 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); } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |