我想在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().
有什么想法吗?!
答案 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}参数转换为对象,因此在路径中需要具有类似的内容。