【问题标题】:How to allow a "?" character in a route parameter in Symfony2?如何允许一个“?” Symfony2中路由参数中的字符?
【发布时间】:2015-01-07 22:31:45
【问题描述】:

我想知道如何允许“?” Symfony2 中路由参数中的字符。这是我拥有的路由(其实我关注的路由参数是“messtext”):

ikproj_groupe_sendreply1:
pattern:  /{groupid}/{receiver}/{messtext}/{cible}/sendreply
defaults: { _controller: IkprojGroupeBundle:Messages:SendReply1 }
requirements:
    messtext: .+

事实上,我看过这个链接:http://symfony.com/doc/current/cookbook/routing/slash_in_parameter.html 这是关于如何在 Symfony2 中的路由参数中允许“/”字符。我完全按照我从该教程中学到的东西做了,但问题是它不起作用:Symfony2 仍然显示此错误消息: 找不到“GET /groupe/sendreply/11/28/hello,%20dear%20sir...can%20I%20join%20your%20group”的路由

所以,我的问题是:我上面的代码有什么问题,我该如何解决?

【问题讨论】:

    标签: symfony parameters routes character yaml


    【解决方案1】:

    您的路线只有 1 个参数可以接受“/”字符。这必须是最后一个,因为后面的每一个都被视为参数值的一部分...在您的情况下,Symfony 路由永远不会检测到 URL 的 ciblesendreply 部分。

    尝试将messtext 参数放在 URL 的最后:

    ikproj_groupe_sendreply1:
    pattern:  /{groupid}/{receiver}/{cible}/sendreply/{messtext}
    defaults: { _controller: IkprojGroupeBundle:Messages:SendReply1 }
    requirements:
        messtext: .+
    

    【讨论】:

    • 好吧,我做了这样的改变,我把 messtext 参数放在最后一个,但是 Symfony 仍然显示这个错误消息: No route found for "GET /groupe/sendreply/11/28/P/" ( from "localhost/Wkayet_project/PFESymfony2/web/app_dev.php/groupe/11/…) ...顺便说一下,我想通过参数messtext传递的值是:???。因此,很明显Symfony仍然不允许“?”在在这种情况下的路由参数。那么,解决方案是什么?...你有什么想法吗??
    • 好吧,例如,如果参数messtext包含以下值:???,如何使用urlencode对其进行编码?你能给我一个简单的例子吗?..提前谢谢。
    • 显示您创建 URL 的代码(PHP 或 Twig);
    • 和 sendreply 根据你提到的错误放错了地方
    • @Nadim2014 所有更新(特别是关于代码)都需要添加到问题中而不是 cmets(然后删除所有 cmets)
    猜你喜欢
    • 2016-02-29
    • 1970-01-01
    • 1970-01-01
    • 2015-09-06
    • 2012-04-05
    • 2013-01-22
    • 1970-01-01
    • 2013-06-08
    • 2013-11-10
    相关资源
    最近更新 更多