我目前的设置:
控制器:
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
错误。
说实话,我甚至不必在网址内根据诊所显示身份证,但我无法通过其他方式看到它?任何帮助将非常感激。非常感谢。
答案 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
在类型提示依赖注入参数之后放置方法参数。