Symfony - 如何在控制器中生成带参数的url

时间:2014-05-16 15:09:33

标签: php symfony

我想生成像../ profile / firstname.lastname

这样的网址

但是我不明白我怎么能这样做因为我想在我的php中也是用户的id。

这是我的控制者:

       $controllers
            ->match('profile/{firstname.lastname}/', array($this, 'profile'))
            ->assert('userId', '\d+')
            ->method('GET|POST')
            ->before(array($this, 'checkLogin'))
            ->bind('home.profile');

2 个答案:

答案 0 :(得分:1)

您必须像这样构建Route

<route id="profile" path="/profile/{first_name}.{last_name}">
        <default key="_controller">...</default>
    </route>

在控制器中创建这样的

  

$ this-&gt; generateUrl(&#39;个人资料&#39;,[               &#39;如first_name&#39; =&GT; &#39; skowron&#39 ;,               &#39;姓氏&#39; =&GT; &#39;线&#39;           ]);

但如果你有2个配置文件使用相同的数据,它会给你带来不好的结果。然后,您可以创建slug或将id参数添加到路径

答案 1 :(得分:0)

Symfony使用Symfony\Component\Routing\Generator\UrlGenerator::generate()生成路径。但可能路径系统中未定义路径。所以你必须创建一个实例并传递一个只包含你想要的路径的RouteCollection,这似乎不是一个好方法。

最好使用preg_replace