如何更改提交表单后生成的URL-
http://localhost:8000/estates?zone=London&type=villa
此URL:
http://localhost:8000/estates/London/villa
需要使URL对搜索引擎更加友好。
我从表单中的输入字段中获得了区域和别墅
localhost:8000/estates
提交表单时,我将获得如下网址-
localhost:8000/estates?zone=London&type=villa
我希望在提交表单时使用这个URL,而不是上面的URL-
localhost:8000/estates/London/villa
答案 0 :(得分:1)
提交表单时,它应以这种方式在控制器操作中捕获发布数据-
class MyController
{
public function create()
{
// Your form
}
public function store()
{
// This is where you receive the zone and villa in the request
}
}
如您所见,您已经在store方法中收到了请求中的输入字段,现在您可以执行以下操作-
public function store(Request $request)
{
// Your code here
redirect()->to($request->zone.'/'.$request->villa);
}
请确保您已为区域和别墅创建路线,否则重定向到不存在的路线/ URL 无效。
为您的请求创建这样的路线-
Route::get('estates/{zone}/{villa}', 'MyController@anotherMethod');
您的控制器中将有另一种操作方法来接收此区域和别墅这样的输入-
public function anotherMethod($zone, $villa)
{
// Access your $zone and $villa here
}
答案 1 :(得分:0)
您应该重组路线,使区域和村庄成为路线参数。
例如,http://localhost:8000/estates/London/villa的路线为Route::post('/estates/{zone}/{villa}', 'SomeController@action')
,在控制器中,您可以注入 zone 和 village 作为参数。所以您可以使用类似这样的东西:
class SomeController {
public function action(Request $request, string $zone, string $villa){
}
}
在Laravel文档的“路由”的“路由参数”部分中对此进行了进一步的描述。