💻 آخرین فرصت یادگیری برنامه‌نویسی با آفر ویژه قبل از افزایش قیمت در ۵ آذر ماه (🎁 به همراه یک هدیه ارزشمند )
۰ ثانیه
۰ دقیقه
۰ ساعت
۱ Mehrjoo
پیدا نشدن متد میدلور در کانستراکت
محسن موحد حل شده توسط محسن موحد

سلام طبق گفته استاد من توی کنترلر ویدئو‌ها اومد و کانستراکت رو گذاشتم و مثل زیر کد رو قرار دادم اما ظاهرا متد میدلور رو نمیخونه . نسخه لاراول 11

public function __construct()
{
$this->middleware(CheckVerifyEmail::class);
}

وقتی روی متد middleware هاور میکنم مینویسه همچین متدی پیدا نشد .

 

<?php
namespace App\Http\Controllers;
use App\Http\Middleware\CheckVerifyEmail;
use App\Http\Requests\storeVideoRequest;
use App\Http\Requests\UpdateVideoRequest;
use App\Models\Category;
use App\Models\Video;
use Illuminate\Http\Request;

 

و خطای صفحه :

Call to undefined method App\Http\Controllers\VideoController::middleware()

سلام،

در نسخه 11 لاراول، یه تغییر جدید داریم و باید کنترلرت از اینترفیس HasMiddleware استفاده کنه. با پیاده‌سازی این اینترفیس، یه متد استاتیک به نام middleware() توی کنترلر تعریف می‌کنی که توی اون می‌تونی همه میدلورها رو یه جا تعریف کنی. در واقع کدها مرتب‌تر و منظم‌تر شدن.

مثال خود داک:

namespace App\Http\Controllers;
use App\Http\Controllers\Controller;
use Illuminate\Routing\Controllers\HasMiddleware;
use Illuminate\Routing\Controllers\Middleware;
class UserController extends Controller implements HasMiddleware
{
    /**
     * Get the middleware that should be assigned to the controller.
     */
    public static function middleware(): array
    {
        return [
            'auth',
            new Middleware('log', only: ['index']),
            new Middleware('subscribed', except: ['store']),
        ];
    }
    // ...
}

داک رو مطالعه کن. روش دیگه‌ای هم داره که در نسخه‌های قبلی هم به همین صورت بوده.

بهترین پاسخ
محسن موحد ۰۱ مهر ۱۴۰۳، ۰۲:۰۴