Will Daniels
Will Daniels

Reputation: 125

Middleware function doesnt exist

In my web.php I have a route

Route::get('summary_average_fee', 'Summary@AverageFee')->middleware('CheckParams@dateLimits');

Im trying to refrence the dateLimits function in the CheckParams class

My CheckParams class, saved as CheckParams.php in the Middleware folder

<?php

namespace App\Http\Middleware;

use Closure;

class CheckParams
{
    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @return mixed
     */
    public function dateLimits($request, Closure $next)
    {
        isEmpty($request->input('startDate'), 'NO_START_DATE');
        isEmpty($request->input('endDate'), 'NO_END_DATE');

        return $next($request);
    }

    private function isEmpty($value, $error, $status)
    {
        if(empty($value))
        {
            return response()->json($error, 422);
        }
    }
}

In the kernal.php file I add this to the routeMiddleware array

'CheckParams' => \App\Http\Middleware\CheckParams::class

When it runs, I get the error that Class CheckParams@dateLimits does not exist

Upvotes: 0

Views: 112

Answers (1)

ka_lin
ka_lin

Reputation: 9432

Seems to me that your middleware should be rewritten and update the usage:

use App\Http\Middleware\CheckParams;

Route::get('summary_average_fee', 'Summary@AverageFee')->middleware(CheckParams::class);

Middleware:

namespace App\Http\Middleware;

use Closure;

class CheckParams
{
    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @return mixed
     */
    public function handle($request, Closure $next)
    {
        $this->isEmpty($request->input('startDate'), 'NO_START_DATE');
        $this->isEmpty($request->input('endDate'), 'NO_END_DATE');

        return $next($request);
    }

    private function isEmpty($value, $error, $status)
    {
        if(empty($value))
        {
            return response()->json($error, 422);
        }
    }
}

Upvotes: 2

Related Questions