Symfony 2 ParamConverter不工作

时间:2014-09-12 08:10:59

标签: php symfony

我想在symfony2中使用ParamConverter,但我保持返回异常。

我有这段代码:

/**
 * @Route("/")
 * @Route("/{_locale}")
 * @ParamConverter("domain", class="ProdacomMainBundle:PdbDomain")
 * @Template("ProdacomMainBundle:Main:index.html.twig, vars={"domain"})
 */
public function indexAction(PdbDomain $domain) {

}

它一直返回的错误:

    FileLoaderLoadException: Cannot import resource "C:\htdocs\domeinbeheer\src\Prodacom\MainBundle/Controller/" from "C:/htdocs/domeinbeheer/app/config\routing.yml". ([Syntax Error] Expected Doctrine\Common\Annotations\DocLexer::T_CLOSE_PARENTHESIS, got 'domain' at position 177 in method Prodacom\MainBundle\Controller\MainController::indexAction().)

这一个:

    AnnotationException: [Syntax Error] Expected Doctrine\Common\Annotations\DocLexer::T_CLOSE_PARENTHESIS, got 'domain' at position 177 in method Prodacom\MainBundle\Controller\MainController::indexAction().

有什么想法吗?!

2 个答案:

答案 0 :(得分:3)

你错过了一个结尾的引用:

 @Template("ProdacomMainBundle:Main:index.html.twig, vars={"domain"})
                                                   ^

这就是两个例外所说的。

但是如果你修复了那些,你会发现除非你有一个名为domain的GET / POST参数提供ID,否则无法填充$ domain。

此外,如果您希望domain参数是可选的,那么您必须像这样定义索引操作:

public function indexAction(PdbDomain $domain = null)

否则,您将收到一些新的异常,说$ domain不能为空。

答案 1 :(得分:-1)

Oke再次阅读文档http://symfony.com/doc/current/bundles/SensioFrameworkExtraBundle/annotations/converters.html

ParamConverter似乎只与URL中的请求参数一起使用,例如路由中的{id}参数。

它将{id}参数转换为对象,因此在路径中需要具有类似的内容。