我不明白一个问题。 使用带路径示例
的控制器时/**
* @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而没有使用“ - ”的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>
有人可以解释一下吗?
答案 0 :(得分:3)
没有名为$ var-iable的变量,因为它等同于$var - iable
。你不希望从$ var中减去不存在的常量的结果...... PHP不允许变量在其名称中包含连字符,因为在减法和实际变量之间进行区分会让人感到困惑。
您可以创建名为$var_iable
的变量。路径中{}附件之间的内容将根据您的名称转换为$变量并传递到您的控制器方法中。 Symfony解决了PHP中的变量不允许使用连字符的事实。
tldr:使用驼峰案例或下划线。
答案 1 :(得分:2)
PHP语法不允许在变量名中使用连字符。
答案 2 :(得分:0)
我一直试图遵循规则,即路线应该始终尝试遵循
之类的规则<controller>/action/{id}
其中id是可选的。虽然我经常读到破折号更有利于在URL而不是下划线中使用,但我尽量避免这两种情况。你的路线最好是这样的:
* @Route("/news/comment/delete/{id}",
或更好
* @Route("/comment/delete/{id}",
如果“新闻”不需要在网址模式中,请将其删除。否则你可以在新闻栏目中查看它,在评论控制器中有一个名为“删除”的动作,你传递的是“id”。你有“comment-id”,但很明显你传递了一个评论ID。如果您有时间查找有关RESTful URL的一些文档。
但是为了回答你关于php编码的问题,我建议不要在PHP代码或MySQL数据库中使用破折号作为字段或表名。编码时,使用下划线要好得多。