路线档案: -
Route::get('/Observation/{type}/list/{status}', 'ObservationController@index')->name('list_observation');
当前网址: 本地主机:8088 / HSE /公共/观察/状态/清单/ 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
哪个是正确的数据库列名。
答案 0 :(得分:1)
也许在view
或您生成该URL的位置,您没有将所有必需的参数传递给路径。
答案 1 :(得分:0)
从laravel 5.1迁移到5.6时,我们必须这样做
在寻找解决方案来仔细解决此问题时,我们只是将每个段从{SLUG}替换为{SLUG?},而不是解决每个出现的问题。
我们正在使用路线注释(https://github.com/LaravelCollective/annotations)。所以我们的替换REGEX看起来像这样:
(@\b(?:Post|Get|Put|Delete|Update)\b.*\{)([^?"]*)(\}.*\n)
$1$2?$3
寻找此特定问题的人,需要调整正则表达式。也许有人可以在评论中解决此问题。
这不是一个很好的解决方案,但是可以完成工作。也许这对将来的任何人都有帮助。