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 对搜索引擎更友好。

我从

中表单的输入字段中得到 zonevilla

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');

您的控制器中将有另一个操作方法来接收此 zonevilla 输入,例如 -

public function anotherMethod($zone, $villa)
{
    // Access your $zone and $villa here
}