laravel 5.5缺少[Route:

时间:2017-11-08 22:57:50

标签: php mysql laravel eloquent laravel-5.5

路线档案: -

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

哪个是正确的数据库列名。

2 个答案:

答案 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

寻找此特定问题的人,需要调整正则表达式。也许有人可以在评论中解决此问题。

这不是一个很好的解决方案,但是可以完成工作。也许这对将来的任何人都有帮助。