Laravel 5具有多个ID的路线

0w3*_*n86 1 routes laravel-5

我想将两组ID传递给一条路线。

第一个ID是经过身份验证的用户的ID,因此例如3,第二个是候选人的ID。

所以我想做的是:vault / 3 / candidates / 120

这是我想要的路线:

Route::get('vault/{id}/candidates/{id}', 'CandidateController@centreCandidatesShow');
Run Code Online (Sandbox Code Playgroud)

使用方法:

ublic function centreCandidatesShow($id)
{
    $candidate = Candidate::with('qualification')->find($id);

    return view('vault.show', compact('candidate'));
}
Run Code Online (Sandbox Code Playgroud)

有人可以让我知道这是否可能吗?

抱歉,这个问题听起来很愚蠢,甚至根本不可能。我对此还很陌生。

非常感谢。

Pis*_*hio 6

routes.php

Route::get('vault/{userId}/candidates/{candidateId}', 'CandidateController@centreCandidatesShow');
Run Code Online (Sandbox Code Playgroud)

CandidatesController.php

public function centreCandidatesShow($userId, $canidateId)
{
    $candidate = Candidate::with('qualification')->find($canidateId);
    $user = User::find($userId);

    return view('vault.show', compact('candidate'));
}
Run Code Online (Sandbox Code Playgroud)

命名路线

我强烈建议使用命名路由。

Route::get('vault/{userId}/candidates/{candidateId}', [
    'as' => 'candidates.show', 
    'uses' => 'CandidateController@centreCandidatesShow'
]);
Run Code Online (Sandbox Code Playgroud)

这不仅可以帮助您生成网址,还可以在传递参数时提供帮助!

例:

<a href="{{ route('candidates.show', $userId, $candidateId) }}">Link to candidate</a>

这将提供链接并传递参数!

您甚至可以从控制器重定向到路由!

return redirect()->route('candidates.show', $userId, $candidateId);


说明:

您可以将任何内容作为路由参数。大括号内的所有内容均视为有效参数。另一个示例是:

Route::get('country/{country}/city/{city}/street/{street}/zip{zip}', 'AddressController@show');
Run Code Online (Sandbox Code Playgroud)

在AddressController @ show中,您将按顺序接受这些参数。

public function show($country, $city, $street, $zip) {..}

文件:http//laravel.com/docs/5.1/routing#route-parameters