【问题标题】:laravel 5.5 Missing required parameters for [Route:laravel 5.5缺少[Route:
【发布时间】: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


【解决方案1】:

也许在 view 的某个地方,或者您正在生成该 URL 的地方,您没有将所有必需的参数传递给路由。

【讨论】:

    【解决方案2】:

    我们在从 laravel 5.1 迁移到 5.6 时必须这样做

    在寻找如何仔细解决此问题的解决方案时,我们只是将每个 slug 从 {SLUG} 替换为 {SLUG?},而不是修复发生的每个问题。

    我们正在使用 Route-Annotation (https://github.com/LaravelCollective/annotations)。所以我们的替换-REGEX 看起来像这样:

    • 搜索:(@\b(?:Post|Get|Put|Delete|Update)\b.*\{)([^?"]*)(\}.*\n)
    • 替换:$1$2?$3

    寻找这个特定问题的人需要调整正则表达式。也许有人可以在 cmets 中解决这个问题。

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

    【讨论】:

      猜你喜欢
      • 2018-07-09
      • 1970-01-01
      • 2021-11-15
      • 2021-11-06
      • 2023-03-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-03
      相关资源
      最近更新 更多