【发布时间】:2018-04-21 19:33:47
【问题描述】:
路线文件:-
Route::get('/Observation/{type}/list/{status}', 'ObservationController@index')->name('list_observation');
当前网址: localhost:8088/hse/public/Observation/status/list/2
控制器:
protected $type ;
protected $status ;
public function __construct(Request $request)
{
$this->middleware('auth')->except('getBuildings');
$this->status = Route::current()->parameter('status');
$this->type = Route::current()->parameter('type');
}
public function index()
{
if ($this->status == 'all'){
$observations = Observation::all();
}
else {
$observations = Observation::where($this->Type(),$this->status)->get();
}
return view('observations._list')->with('observations',$observations);
}
public function Type(){
switch ($this->type){
case 'building':
$this->type = 'building_id';
break;
case 'status':
$this->type = 'status_id';
break;
}
return $this->type;
}
错误显示: [Route: list_observation] [URI: Observation/{type}/list/{status}] 缺少必需的参数。 (观点:
当我删除查询行中的 $this->Type() 方法时,错误消失。
$this->Type() 方法的返回值为: status_id
哪个是正确的数据库列名。
【问题讨论】:
-
您访问控制器的 URL 是什么?
-
localhost:8088/hse/public/Observation/status/list/2 ,并且在与该控制器无关的其他路由中也显示相同的错误
-
将两个参数设置为
index($type, $status)方法的参数。检查route parameters。 -
@user2873860 也许在您尝试使用该网址的
view的某个地方,您没有将这两个值都放在网址中。 -
可能就是这样。检查生成该 URL 的位置,确保传递所有必需的参数
标签: php mysql laravel eloquent laravel-5.5