Ich habe Middleware gemacht, dass, wenn Klasse überprüft existiert nach url Segment und führt entsprechende tasks.However bevor die Middleware ausgelöst wird Laravel die Ausnahme abfängt und wirft Fehler:Middleware nicht workign wie in Laravel erwartet 5.2
ReflectionException in Route.php line 280:
Class App\Http\Controllers\cms\modules\asdfasdfsadf\asdfasdfsadfController does not exist
Wenn ich sterbe und dump alles auf checkClass
Middleware ist der Wert Dump nur wenn die Klasse existiert.
Meine Route wo Middleware angewendet wird, ist:
Route::group(['prefix' => PREFIX,'middleware'=>array('auth','role','checkClass')], function() {
Route::group(['namespace' => 'cms' . '\\modules\\' . Request::segment(2) ], function() {
Route::get('{module}/pages/{page}', Request::segment(4) . '[email protected]');
Route::get('{module}', Request::segment(2) . '[email protected]');
Route::get('{module}/{page}', Request::segment(2) . '[email protected]' . Request::segment(3));
Route::post('{module}/{page}', Request::segment(2) . '[email protected]' . Request::segment(3));
Route::get('{module}/{page}/{id}', Request::segment(2) . '[email protected]' . Request::segment(3));
Route::get('{module}/pages/{page}/{id}', Request::segment(4) . '[email protected]' . Request::segment(5));
Route::post('{module}/pages/{page}/{id}', Request::segment(4) . '[email protected]' . Request::segment(5));
Route::get('{module}/pages/{page}/{abc}/{id}', Request::segment(4) . '[email protected]' . Request::segment(5));
Route::post('{module}/pages/{page}/{abc}/{id}', Request::segment(4) . '[email protected]' . Request::segment(5));
});
});
Hier können wir sehen, dass ich als pro-URL dynamisch Routen erstellt segment.Here ist meine checkClass
Middleware:
<?php
namespace App\Http\Middleware;
use Closure;
use Request;
use Illuminate\Contracts\Auth\Guard;
class CheckClass
{
/**
* The Guard implementation.
*
* @var Guard
*/
protected $auth;
/**
* Create a new filter instance.
*
* @param Guard $auth
* @return void
*/
public function __construct(Guard $auth)
{
$this->auth = $auth;
}
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
if (!class_exists('App\\Http\\Controllers\\cms\\modules\\'.Request::segment(2).'\\'.Request::segment(2).'Controller')) {
return view("errors.404");
} else {
return $next($request);
}
return $next($request);
}
}
Sollte nicht Middleware Feuer vor Laravel sucht Controller Klasse wie pro Route?
Warum würden Sie auch das tun? – TheFallen