我有以下路线:
Route::get("/changeLang/{lang}", 'SiteController@changeLang');
我有以下表格:
<form action="{{ url('/changeLang/???') }}" method="GET">
{{ csrf_field() }}
<select onchange="this.form.submit()" name="lang">
<option value="eng">English</option>
<option value="cro">Hrvatski</option>
</select>
</form>
所以我想将该表单提交到该路由,以便路由接收用户选择的语言。我不知道应该表格方法是GET还是POST。
那么如何在表单操作中指定指向该路由的链接,以便发送所选语言?在URL的末尾放置什么而不是那些问号?
而且我不喜欢使用Laravel的Form facade(或者它只是类)来回显HTML元素,所以如果可能的话我不想这样做。
答案 0 :(得分:3)
您无法提交表单并让它以您期望的格式生成网址。将要发生的是您将获得格式为/changeLang/lang?lang=cro
所以你有两个选择。您提交表单,它会根据查询值重定向。
或者您在表单中添加JavaScript,以便生成您所追求的网址。
<select onchange="window.location.href='/changeLang/' + this.value;" name="lang">
答案 1 :(得分:0)
使用此
<form action="{{ url('/changeLang', [$lang]) }}" method="GET">
{{ csrf_field() }}
<select onchange="this.form.submit()" name="lang">
<option value="eng">English</option>
<option value="cro">Hrvatski</option>
</select>
</form>
或者这个
<form action="{{ url('/changeLang/' . $lang,) }}" method="GET">
{{ csrf_field() }}
<select onchange="this.form.submit()" name="lang">
<option value="eng">English</option>
<option value="cro">Hrvatski</option>
</select>
</form>
答案 2 :(得分:0)
更好地使用laravel表单构建器:
{{ Form::open([
'method' => 'GET',
'action' => ['some@action', $param]
]) }}
...
{{ Form::close() }}
或者:
<form action="{{ url('/changeLang/lang' . $param) }}" method="GET">
答案 3 :(得分:0)
如果您的路线是这样的话。
Route::get("/changeLang", 'SiteController@changeLang');
你的表格会是这样的。
<form action="{{ url('/changeLang') }}" method="GET">
{{ csrf_field() }}
<select onchange="this.form.submit()" name="lang">
<option value="eng">English</option>
<option value="cro">Hrvatski</option>
</select>
从GET
[POST
可选择更改路线后获取价值],在您的controller
中执行此类操作。
public function changeLang(Request $request)
{
$data = $request->all();
//echo $request->lang;
// or you can access data like this.
echo $data['lang'];
}
如果你想要这条路线
Route::get("/changeLang/{lang}", 'SiteController@changeLang');
然后你需要将它附加到路线并且请求url将是这样的。
并在您的控制器中。
public function changeLang($lang)
{
echo $lang;
}
url(route)
url函数生成指定路径的完全限定URL
更多关于url
。
希望这会有所帮助!