繁体   English   中英

Symfony 2或3 ParamConverter

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM