laravel 5.5 缺少 [路线:
laravel 5.5 Missing required parameters for [Route:
路由文件:-
Route::get('/Observation/{type}/list/{status}', 'ObservationController@index')->name('list_observation');
当前 URL :
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;
}
错误显示:
[路线:list_observation] [URI:Observation/{type}/list/{status}] 缺少必需的参数。 (查看:
当我删除查询行中的 $this->Type() 方法时,错误消失了。
$this->Type() 方法的 return 值是:
status_id
哪个是正确的数据库列名。
也许在 view
中的某处或您生成 URL 的地方您没有将所有必需的参数传递给路由。
我们在从 laravel 5.1 迁移到 5.6
时必须执行此操作
在寻找如何仔细解决此问题的解决方案时,我们只是将每个 slug 从 {SLUG} 替换为 {SLUG?},而不是在出现问题的地方修复每个问题。
我们正在使用路由注释 (https://github.com/LaravelCollective/annotations)。所以我们的替换 REGEX 看起来像这样:
- 搜索:
(@\b(?:Post|Get|Put|Delete|Update)\b.*\{)([^?"]*)(\}.*\n)
- 替换:
?
有人在寻找这个特定问题,需要调整正则表达式。也许有人可以在评论中解决这个问题。
这不是一个很好的解决方案,但它可以完成工作。也许这对以后的任何人都有帮助。
路由文件:-
Route::get('/Observation/{type}/list/{status}', 'ObservationController@index')->name('list_observation');
当前 URL : 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;
}
错误显示: [路线:list_observation] [URI:Observation/{type}/list/{status}] 缺少必需的参数。 (查看:
当我删除查询行中的 $this->Type() 方法时,错误消失了。
$this->Type() 方法的 return 值是: status_id
哪个是正确的数据库列名。
也许在 view
中的某处或您生成 URL 的地方您没有将所有必需的参数传递给路由。
我们在从 laravel 5.1 迁移到 5.6
时必须执行此操作在寻找如何仔细解决此问题的解决方案时,我们只是将每个 slug 从 {SLUG} 替换为 {SLUG?},而不是在出现问题的地方修复每个问题。
我们正在使用路由注释 (https://github.com/LaravelCollective/annotations)。所以我们的替换 REGEX 看起来像这样:
- 搜索:
(@\b(?:Post|Get|Put|Delete|Update)\b.*\{)([^?"]*)(\}.*\n)
- 替换:
?
有人在寻找这个特定问题,需要调整正则表达式。也许有人可以在评论中解决这个问题。
这不是一个很好的解决方案,但它可以完成工作。也许这对以后的任何人都有帮助。