【问题标题】:Laravel 5 Route with multiple ID’s具有多个 ID 的 Laravel 5 Route
【发布时间】:2016-02-29 14:45:58
【问题描述】:

我想将两组 ID 传递到一个路由中。

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

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

这是我想要的路线:

Route::get('vault/{id}/candidates/{id}', 'CandidateController@centreCandidatesShow');

使用:

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

    return view('vault.show', compact('candidate'));
}

有人可以告诉我这是否可行,如果可以,怎么做?

【问题讨论】:

    标签: php laravel-5 routes


    【解决方案1】:

    您需要将 ids 放入一个数组中

    Route::get('vault/{userId}/candidates/{candidateId}', [
        'as' => 'candidates.show', 
        'uses' => 'CandidateController@centreCandidatesShow'
    ]);
    
    <a href="{{ route('candidates.show', ['userId'=$userId, 'candidateId'=$candidateId]) }}">Link to candidate</a>
    

    laravel 5 route passing two parameters

    【讨论】:

      【解决方案2】:

      routes.php:

      Route::get('vault/{userId}/candidates/{candidateId}', 'CandidateController@centreCandidatesShow');
      

      CandidatesController.php:

      public function centreCandidatesShow($userId, $canidateId)
      {
          $candidate = Candidate::with('qualification')->find($canidateId);
          $user = User::find($userId);
      
          return view('vault.show', compact('candidate'));
      }
      

      命名路线

      我强烈推荐使用命名路由。

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

      这不仅可以帮助您生成 url,还可以帮助您传递参数!

      例子:

      &lt;a href="{{ route('candidates.show', $userId, $candidateId) }}"&gt;Link to candidate&lt;/a&gt;

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

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

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


      说明:

      你可以把任何你想要的作为路由参数。大括号内的任何内容都被视为有效参数。另一个例子是:

      Route::get('country/{country}/city/{city}/street/{street}/zip{zip}', 'AddressController@show');
      

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

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

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

      【讨论】:

      • 感谢您的回复非常有见地和乐于助人! :)
      • 在链接中使用路由时,应该使用数组作为第二个参数&lt;a href="{{URL::route('admin-photo-delete', [$id, $photo-&gt;id] )}}"&gt;Delete Photo&lt;/a&gt;
      猜你喜欢
      • 2013-02-20
      • 1970-01-01
      • 2016-04-08
      • 1970-01-01
      • 1970-01-01
      • 2015-06-02
      • 2016-01-04
      • 2014-12-15
      • 1970-01-01
      相关资源
      最近更新 更多