Php 将中间件添加到Laravel中的_构造中的控制器
我试图在基于的控制器的_构造中分配中间件,但它抛出以下错误:Php 将中间件添加到Laravel中的_构造中的控制器,php,laravel,laravel-6,laravel-middleware,Php,Laravel,Laravel 6,Laravel Middleware,我试图在基于的控制器的_构造中分配中间件,但它抛出以下错误: BadMethodCallException Method App\Http\Controllers\MyController::middlware does not exist. 这是我的控制器类: <?php namespace App\Http\Controllers; use App\Http\Controllers\Controller; use Illuminate\Http\Request; class M
BadMethodCallException
Method App\Http\Controllers\MyController::middlware does not exist.
这是我的控制器类:
<?php
namespace App\Http\Controllers;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
class MyController extends Controller
{
public function __construct()
{
$this->middlware('myauth');
}
/** something */
public function index()
{
return view('test.hi', ['name' => 'Moh']);
}
}
函数是中间件
,您有一个输入错误,缺少一个e
,可以在控制器的构造函数中指定中间件
public function __construct() {
$this->middleware('auth');
}
对于整个控制器:
$this->middleware('auth');
仅针对特定操作:
$this->middleware('auth')->only('index');
$this->middleware('auth')->except('store');
对于整个控制器,特殊动作除外:
$this->middleware('auth')->only('index');
$this->middleware('auth')->except('store');
首先询问您,您的错误是middlware
name不正确您错过了e
,然后检查以下中间件流程
Laravel中间件-中间件充当请求和响应之间的中间人
首先转到项目文件夹,打开cmd并使用此命令
php artisan make:middleware MiddlewareName
然后转到App\Http\kernel.php并在$routemidware上添加一行
'user_block' => \App\Http\Middleware\MiddlewareName::class
然后转到你的中间件
在handle函数中(编写自己的中间件代码)
在路由中使用您的中间件-
Route::group(['middleware' => ['user_block']],
function () {
Route::get('/logout', array('uses' => 'Auth\LoginController@logout'));
});
如果您在任何控制器的_构造中的特定控制器中使用此中间件,只需写一行即可
namespace App\Http\Controllers;
use App\User;
class UserController extends Controller {
public function __construct() {
$this->middleware('user_block');
}
}
如果您希望此中间件仅用于控制器中的一个操作,则可以将此中间件添加到路由:
Route::get('/login', 'LoginController@login')->middleware('user_block');
如果您在特定的1-2函数中的特定控制器中使用此中间件,只需在控制器中的_construct function o中写入这一行即可
public function __construct()
{
$this->middleware('user_block')->only(['login','register']);
}
谢谢,我不知道为什么我没有意识到这一点