【问题标题】:Laravel 5 | Interface 'Illuminate\Contracts\Routing\Middleware' not foundLaravel 5 |未找到接口“Illuminate\Contracts\Routing\Middleware”
【发布时间】:2016-05-28 17:32:56
【问题描述】:

我使用 Laravel 5。

我试试,

 "use Illuminate\Contracts\Routing\Middleware;"

将“中间件”实现为,

class Language implements Middleware {
       // Some Functions 
  }

我得到错误,

Interface 'Illuminate\Contracts\Routing\Middleware' not found

真的是那个界面不见了吗?

(OR) 定义错误?

(OR) 需要创建 |下载?

谢谢问!

【问题讨论】:

  • 您是否在文件“namespace App\Http\Middleware;”的顶部放置了正确的命名空间?
  • 是的......实际上我创建了“php artisan”......所以一切都很好......这个中间件没有找到异常只有我得到......
  • 能否分享完整的课程代码?
  • 当然...请参阅答案部分...
  • 你的 Laravel 5.1 版本升级到 5.2 了吗?

标签: php laravel laravel-5.2 laravel-middleware laravel-localization


【解决方案1】:

我不知道你是否真的放了那些双引号,但这里有一个工作示例:

<?php

use Illuminate\Contracts\Routing\Middleware;

class Language implements Middleware {
   // Some Functions 
}

【讨论】:

    【解决方案2】:

    我的班级:

    命名空间 App\Http\Middleware;

    use Closure;
    
    use Illuminate\Routing\Redirector;
    use Illuminate\Http\Request;
    use Illuminate\Foundation\Application;
    use Illuminate\Contracts\Routing\Middleware;
    
    class Language implements Middleware {
    
    public function __construct(Application $app, Redirector $redirector, Request $request) {
        $this->app = $app;
        $this->redirector = $redirector;
        $this->request = $request;
    }
    
    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @return mixed
     */
    public function handle(Closure $next, $request)
    {
        // Make sure current locale exists.
        $locale = $request->segment(1);
    
        if ( ! array_key_exists($locale, $this->app->config->get('app.locales'))) {
            $segments = $request->segments();
            $segments[0] = $this->app->config->get('app.fallback_locale');
    
            return $this->redirector->to(implode('/', $segments));
        }
    
        $this->app->setLocale($locale);
    
        return $next($request);
    }
    
     }
    

    LOC: App/Http/Middleware/Language.php

    【讨论】:

      【解决方案3】:

      Illuminate\Contracts\Routing\Middleware 合约在 5.2 中已被弃用,请将其删除。并且不要在类定义中使用它。

      这样

      <?php namespace App\Http\Middleware;
      
      use Closure;
      use Illuminate\Routing\Redirector;
      use Illuminate\Http\Request;
      use Illuminate\Foundation\Applicaion;
      
      class Language{
          //..... YOUR CODE
      }
      

      【讨论】:

      • 我看到了自 5.2 以来的变化。我仍然收到此错误Interface 'App\Http\Middleware\Middleware' not found
      猜你喜欢
      • 1970-01-01
      • 2016-05-26
      • 2017-03-05
      • 2015-04-16
      • 1970-01-01
      • 2022-11-10
      • 1970-01-01
      • 2015-06-15
      • 2021-04-25
      相关资源
      最近更新 更多