Laravel: 将输入查询的结果更改为友好 url
Laravel: Change result of input query to friendly url
如何更改通过提交表单生成的 URL-
http://localhost:8000/estates?zone=London&type=villa
到这个URL:
http://localhost:8000/estates/London/villa
需要使 URL 对搜索引擎更友好。
我从
中表单的输入字段中得到 zone 和 villa
localhost:8000/estates
当我提交表单时,我得到一个 URL 这样的-
localhost:8000/estates?zone=London&type=villa
我想在提交表单时使用此 URL 而不是上面的内容-
localhost:8000/estates/London/villa
您应该重组路线,使区域和村庄成为路线参数。
因此,例如,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 文档中路由的路由参数部分有进一步描述。
当您提交表单时,它应该像这样在控制器操作中捕获 post 数据-
class MyController
{
public function create()
{
// Your form
}
public function store()
{
// This is where you receive the zone and villa in the request
}
}
如您所见,您已在存储方法中收到请求中的输入字段,现在您可以执行以下操作-
public function store(Request $request)
{
// Your code here
redirect()->to($request->zone.'/'.$request->villa);
}
请确保您已为区域和别墅创建 路线 否则重定向到不存在的 route/url 将不工作。
为您的请求创建这样的路线-
Route::get('estates/{zone}/{villa}', 'MyController@anotherMethod');
您的控制器中将有另一个操作方法来接收此 zone 和 villa 输入,例如 -
public function anotherMethod($zone, $villa)
{
// Access your $zone and $villa here
}
如何更改通过提交表单生成的 URL-
http://localhost:8000/estates?zone=London&type=villa
到这个URL:
http://localhost:8000/estates/London/villa
需要使 URL 对搜索引擎更友好。
我从
中表单的输入字段中得到 zone 和 villalocalhost:8000/estates
当我提交表单时,我得到一个 URL 这样的-
localhost:8000/estates?zone=London&type=villa
我想在提交表单时使用此 URL 而不是上面的内容-
localhost:8000/estates/London/villa
您应该重组路线,使区域和村庄成为路线参数。
因此,例如,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 文档中路由的路由参数部分有进一步描述。
当您提交表单时,它应该像这样在控制器操作中捕获 post 数据-
class MyController
{
public function create()
{
// Your form
}
public function store()
{
// This is where you receive the zone and villa in the request
}
}
如您所见,您已在存储方法中收到请求中的输入字段,现在您可以执行以下操作-
public function store(Request $request)
{
// Your code here
redirect()->to($request->zone.'/'.$request->villa);
}
请确保您已为区域和别墅创建 路线 否则重定向到不存在的 route/url 将不工作。
为您的请求创建这样的路线-
Route::get('estates/{zone}/{villa}', 'MyController@anotherMethod');
您的控制器中将有另一个操作方法来接收此 zone 和 villa 输入,例如 -
public function anotherMethod($zone, $villa)
{
// Access your $zone and $villa here
}