【问题标题】:Laravel: Class declaration Compatible errorLaravel:类声明兼容错误
【发布时间】:2019-01-15 06:00:33
【问题描述】:

我正在使用 laravel 5.6,当创建控制器和通过路由运行控制器时,我遇到了类似的错误

声明 App\Http\Controllers\XyzController::xyz(Illuminate\Http\Request $request) 应该兼容 App\Http\Controllers\Controller::xyz($job)

我的代码是

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class XyzController extends Controller
{

    public function xyz(Request $request)
    {
        return view('xyz.xyz');
    }
}

【问题讨论】:

  • 欢迎来到 Stack Overflow。您正在寻找答案的问题是什么?
  • 当我通过命令创建控制器文件然后创建路由和刀片文件并在控制器中创建功能如上所示但现在它无法正常工作。

标签: laravel controller laravel-5.6


【解决方案1】:

你忘记使用控制器了?

使用 App\Http\Controllers\Controller 作为控制器

【讨论】:

    【解决方案2】:

    XyzController 扩展的基本 Controller 定义了一个名为 xyz 的方法,其签名与您定义的签名不同。

    您需要调整XyzController 中的方法以匹配基本控制器中xyz 的签名,或者调整基本控制器以具有不同的签名。

    问题示例:

    class A
    {
        public function xyz($obj) {}
    }
    
    class B extends A
    {
        public function xyz(Illuminate\Http\Request $request) {}
    }
    

    Declaration of B::xyz(Illuminate/Http/Request $request) should be compatible with A::xyz($obj)

    【讨论】:

      【解决方案3】:

      缺少路由参数:$job

      namespace App\Http\Controllers;
      
      use Illuminate\Http\Request;
      
      class XyzController extends Controller
      {
      
          public function xyz(Request $request, $job)
          {
              return view('xyz.xyz');
          }
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-04-30
        • 2013-05-02
        • 2015-02-03
        • 2016-01-11
        • 2011-04-04
        • 1970-01-01
        • 2012-04-12
        相关资源
        最近更新 更多