问题是如何创建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表单网址的最佳解决方案是什么?
答案 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
}
这就是通常用表单实现搜索的方式。发布搜索字词会重定向到结果。