Laravel 5 - 无法访问路径

时间:2015-08-25 20:48:31

标签: laravel routes laravel-5

我目前的设置:

控制器:

public function showGeneralPage($id, ShowClinicFormRequest $request)
{
    return View::make('clinic.general', ['clinic' => Clinic::where('id', $id)
        ->first()]);
}

ShowClinicFormRequest:

public function authorize()
{
    $clinicId = $this->route('clinic');

    return Clinic::where('id', $clinicId)
    ->where('user_id', Auth::id())
    ->exists();
}

路线:

Route::get('clinic/{id}/general', 'ClinicController@showGeneralPage

尝试点击页面时<a href="{{ url('/clinic/general') }}">General</a>,会出现forbidden错误。

说实话,我甚至不必在网址内根据诊所显示身份证,但我无法通过其他方式看到它?任何帮助将非常感激。非常感谢。

2 个答案:

答案 0 :(得分:0)

这里有两个问题。首先,您必须在生成URL时传递id。假设变量$id

url('clinic/'.$id.'/general')

其次,您正在尝试检索参数clinic,但它实际上称为id
将其更改为:

$clinicId = $this->route('id');

答案 1 :(得分:0)

你可以试试这个(我发现了三个问题):

$id = $this->route()->parameter('id'); // $this->route('id') works as well

此外,您需要在生成id时传递URI,例如:

{{ url("clinic/{$id}/general") }} // $id may have some value, i.e: 10

此外,您需要在此处更改参数的顺序:

 public function showGeneralPage($id, ShowClinicFormRequest $request)

应该是:

 public function showGeneralPage(ShowClinicFormRequest $request, $id)

注意:使用Method Injection在类型提示依赖注入参数之后放置方法参数。