Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/234.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 将中间件添加到Laravel中的_构造中的控制器_Php_Laravel_Laravel 6_Laravel Middleware - Fatal编程技术网

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']);
}

谢谢,我不知道为什么我没有意识到这一点