[英]Symfony 2 or 3 ParamConverter
我不明白一个问题。 将控制器与路线配合使用时
/**
* @Route("/news/comment-delete/{comment_id}",
* name = "blog_deleteComment"
* )
* @ParamConverter("comment", class="pfrechowiczBlogBundle:Comment", options={"id" = "comment_id"})
*/
并在HTML中为控制器提供参数
<a href="{{ path('blog_deleteComment', {'comment_id' : comment.id}) }}" class="blog_deleteComment" >Usuń</a>
可以,但是当我将“ _”更改为“-”时,它不起作用,我也不知道为什么找不到答案。 仅当必须将ParamConverter与带有“-”的URL一起使用而没有使用“-”的ParamConverter的Route才可以时,才出现此问题。
这个例子不起作用:
/**
* @Route("/news/comment-delete/{comment-id}",
* name = "blog_deleteComment"
* )
* @ParamConverter("comment", class="pfrechowiczBlogBundle:Comment", options={"id" = "comment-id"})
*/
和HTML代码:
<a href="{{ path('blog_deleteComment', {'comment-id' : comment.id}) }}" class="blog_deleteComment" >Usuń</a>
有人可以解释一下吗?
没有名为$ var-iable的变量,因为它等同于$var - iable
。 您不希望从$ var中减去不存在的常量的结果……PHP不允许变量名称中带有连字符,因为在减法和实际变量之间进行区分会太混乱。
但是,您可以创建一个名为$var_iable
的变量。 路由中的{}外壳之间的内容将根据您的姓名转换为$ variable,并传递到控制器方法中。 Symfony解决了PHP变量中不允许使用连字符的事实。
tldr:使用驼峰式或下划线。
PHP语法不允许在变量名称中使用连字符。
我一直试图遵循一条规则,即一条路线应始终遵循以下规则:
<controller>/action/{id}
id是可选的。 虽然我经常读到破折号更适合在URL而不是下划线中使用,但我还是尽量避免使用两者。 您的路线最好是这样的:
* @Route("/news/comment/delete/{id}",
甚至更好
* @Route("/comment/delete/{id}",
如果“新闻”不需要位于网址格式中,则将其删除。 否则,您可以像在新闻部分中那样查看它,在评论控制器中,有一个名为“ delete”的动作正在传递“ id”。 您有“ comment-id”,但很明显,您正在传递注释ID。 如果有时间,请查阅有关RESTful URL的一些文档。
但是要回答有关使用php进行编码的问题,我建议不要在PHP代码或MySQL数据库中使用破折号作为字段或表名。 编码时,最好使用下划线。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.