Laravel:将输入查询的结果更改为友好的URL

时间:2019-03-01 01:07:37

标签: laravel forms seo

如何更改提交表单后生成的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

2 个答案:

答案 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文档的“路由”的“路由参数”部分中对此进行了进一步的描述。