xen*_*ish 5 php laravel laravel-5
我在laravel 5中创建了一个名为IpHitsCounter的中间件,它使用一个名为DeviceInfo的模型,它位于App\Models\FrontEnd中
<?php namespace App\Http\Middleware\FrontEnd;
use Closure;
use Request;
use BrowserDetect;
use App\Models\FrontEnd\DeviceInfo;
use DB;
class IpHitsCounter {
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
DeviceInfo::create(['devices'=>$agentDevice,'deviceFamily'=>$deviceFamily]);
}
Run Code Online (Sandbox Code Playgroud)
我的模型代码是:
<?php namespace App\Models\FrontEnd;
use Illuminate\Database\Eloquent\Model;
class DeviceInfo extends Model {
/**
* The database table used by the model.
*
* @var string
*/
protected $table = 'client_device_infos';
/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $fillable = ['devices', 'deviceFamily'];
}
Run Code Online (Sandbox Code Playgroud)
这样做时,我收到以下错误: Class 'App\Models\FrontEnd\DeviceInfo' not found
虽然这个类仍然存在,但我收到了错误.
Sai*_*nce 16
我想你忘了注册了middleware.
打开文件 app/Http/Kernel.php
寻找$routeMiddleware酒店.
protected $routeMiddleware = [
'Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode',
'Illuminate\Cookie\Middleware\EncryptCookies',
'Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse',
'Illuminate\Session\Middleware\StartSession',
'Illuminate\View\Middleware\ShareErrorsFromSession',
'App\Http\Middleware\VerifyCsrfToken',
'App\Http\Middleware\FrontEnd\IpHitsCounter' // your middleware
];
Run Code Online (Sandbox Code Playgroud)
更新1月28日,2016年8月28日
自Laravel 5.3.*发布以来,路由文件中有一些配置.5.3之前,只有1名为文件routes.php,但现在,有2个文件,web.php并api.php与这两个文件在内部项目的根目录中routes的文件夹.随意检查出来.
来到解决方案,您需要打开app/Http/Kernel.php并编辑$middlewareGroups具有密钥的密钥web.所以,它应该看起来像这样:
'web' => [
\App\Http\Middleware\EncryptCookies::class,
\Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
\Illuminate\Session\Middleware\StartSession::class,
\Illuminate\View\Middleware\ShareErrorsFromSession::class,
\App\Http\Middleware\VerifyCsrfToken::class,
\Illuminate\Routing\Middleware\SubstituteBindings::class,
\App\Http\Middleware\FrontEnd\IpHitsCounter::class // your middleware
],
Run Code Online (Sandbox Code Playgroud)