在表单中,用户可以在2个下拉列表中搜索和选择(例如,城市和城镇)。提交表单后,我希望将其重定向到包含URL中所选下拉选项的网址。
因此,在提交表格后,他们将被重定向到www.domain.co.uk/city/town。
我很难掌握URL参数的概念,以及如何将它们传递给路线!
当前设置:
{!! Form::open(['route' => ['search'], 'method' => 'POST', 'id' => 'search']) !!}
我要发布到网址的两个字段是:
<input type="hidden" name="town" id="town">
和
{!! Form::select('city', $city, null,
['class' => 'form-control', 'id' => 'city', 'required'])
!!}
我知道我必须发布后者的ID,因此我必须在DB中查找实际的name
字段并将其返回使用(我必须生成反正)。
路线:
Route::post('{city}/{town}', ['uses' => 'Controller@search',
'city' => Input::get('city'), 'town' => Input::get('town')]
)->name('search');
控制器:
public function search(Request $request)
{
return view('location.search');
}
如何在重定向时使用URL中的两个字段值?我认为我正以错误的方式接近它,但我想不出其他选择。
任何帮助都会受到大力赞赏!提前谢谢。
答案 0 :(得分:0)
如果您希望数据在网址中可用,则Route
应该是get
请求。不是post
。
Route::get('{city}/{town}', 'Controller@search');
然后,在您的控制器中,只需将它们添加到参数列表中即可获得它们:
public function search($city, $town)
答案 1 :(得分:0)
我们如何采用另一种方法并使用没有表单的javascript。示例如下:
<input type="hidden" name="town" id="town" value="town">
<select name="city" id="city">
<option value=""></option>
<option value="City1">City 1</option>
<option value="City2">City 2</option>
<option value="City3">City 3</option>
<option value="City4">City 4</option>
</select>
<button type="button" onclick="redirect()">Redirect</button>
<script>
function redirect(){
var city = document.querySelector('#city').value;
var town = document.querySelector('#town').value;
if(city != '' && town != ''){
window.location = 'http://mydomain.co.ke/'+city+'/'+town;
//or
window.location = '/'+city+'/'+town;
}
else{
alert('Select a city');
}
}
</script>
作为注释,仍然可以使用表格外观
创建输入/选择元素答案 2 :(得分:0)
您可以将路线结构更改为:
chrome.fileSystem.getWritableEntry(Entry entry, function callback)
在你的控制器中:
Route::post('search', 'Controller@search')->name('search');
Route::get('{city}/{town}', 'Controller@show')->name('location.show');