Laravel 5:使用自定义参数构建URL

时间:2015-11-12 10:07:41

标签: php laravel

我有一个应用程序,您可以在其中选择多个客户。 选择客户将生成以下URL:

http://localhost:8000/customer/CUSTOMER_NAME

从那时起,我想选择一个特定的子页面(例如:支持页面)

如何生成以下链接:

http://localhost:8000/customer/CUSTOMER_NAME/support

到目前为止,我总是丢失了我的CUSTOMER_NAME参数,而且我不知道如何保留它。

我使用的框架是Laravel 5.

有什么想法吗?

3 个答案:

答案 0 :(得分:2)

您应该通过

将url参数传递给视图来完成此操作

我相信你的路线中有这样的东西

Route::get('customer/{id}', 'yourController@yourFunctionName');

然后,在你的控制器中,你可能有

public function yourFunctionName($id)
{
    return view('yourViewName')->with('id', $id);
}

然后从您的视图中可以简单地生成url这样的

<a href="customer/{id}/support">Click here</a>

拥有如下所示的网址

http://yourprojectname/customer/18/support

建议:使用主键或任何唯一字段,而不是使用名称,以避免将来出现问题。

此外,您还应使用助手生成网址

答案 1 :(得分:2)

您使用的是named routes吗?

Route::get('customer/{name}', ['as' => 'customer.index', 'uses' => 'CustomerController@index']);

您可以设置这样的新路线:

Route::get('customer/{name}/support', ['as' => 'customer.support', 'uses' => 'CustomerController@support']);

使用支持部分的方法

public function support($name) {
    return view('customer.support', [
        'name' => $name,
    ]);
}

在您的布局中,您可以链接到路线。

<a href="{{ route('customer.support', $name) }}">Support</a>

答案 2 :(得分:0)

{{ route('pages.home', $array_of_custom_params) }}

这将生成链接: