Symfony2,Twig,Routes,用slug创建有效的url

时间:2013-06-13 19:08:04

标签: forms search symfony twig routes

问题是如何创建hpp:// localhost / search / {searchString}

这样的路由

我玩了但是......

简单形式是(树枝)

<form  class="form-search" action="{{ path ('site_search') }}" method="get">
    <input type="text" name="string" value="{% trans %}Search{% endtrans %}..."/>
</form>

路线

site_search:
    pattern:  /search/{string}
    defaults: { _controller: MainSiteBundle:Search:default, string: null }
    methods: [GET]

现在我得到了这样的网址http://local.site/search?string=some,但我希望得到http://local.site/search/some

或者_GET表单网址的最佳解决方案是什么?

1 个答案:

答案 0 :(得分:1)

这就是html的工作方式..表单方法获取会追加?inputname = inputvalue 发布会向指定的帖子发送请求行动网址。 (但不会在 / inputvalue

等动作上附加内容

您可以使用javascript动态更改表单操作,或者在您的网络服务器配置中使用RewriteRule以实现您正在寻找的内容。

在我的意见中,网址重写可能是更好的选择。直接访问/ search / term的用户将不会被重定向,提交表单的用户将在浏览器中看到正确的URL。

为什么不使用method="post"并在您的操作中将用户重定向到 / search / term

public function searchAction($string = null, Request $request)
{
    if ( !($request->get('string') && !($string) ) {
         // ... render your form here 

         // return form
    }

    // ... perform search here 
    // return search results
}

这就是通常用表单实现搜索的方式。发布搜索字词会重定向到结果。