Je monte un site qui a une section protégée où les utilisateurs doivent être connectés pour accéder. Je l'ai fait en Laravel 4 sans trop d'incident. Cependant, pour la vie de moi, je ne peux pas comprendre pourquoi je ne peux pas le faire fonctionner en Laravel 5 (L5).
Dans L5, le middleware a été/a été introduit. Cela change le fichier d'itinéraire en:
Route::get('foo/bar', ['middleware'=>'auth','FooController@index']);
Route::get('foo/bar/{id}', ['middleware'=>'auth','FooController@show']);
L'itinéraire fonctionne correctement tant que le middleware n'est pas inclus.
Lorsque l'itinéraire est accessible avec le middleware, le résultat n'est pas tellement amusant.
Oups, je crois qu'il y a un problème ...
ReflectionException dans Route.php ligne 150:
La fonction () n'existe pas
Toute perspicacité, aide et/ou assistance est très appréciée. J'ai fait le circuit Google et je n'ai rien trouvé de pertinent pour ma situation actuelle. Merci d'avance.
vous avez oublié la touche uses
:
Route::get('foo/bar/{id}', ['middleware'=>'auth', 'uses'=>'FooController@show']);
Si vous ajoutez quelque chose de plus que votre méthode de contrôleur dans vos routes, vous devez ajouter uses
comme clé du tableau pour votre contrôleur, donc par exemple si je n'ai pas de middleware, il suffit d'écrire:
Route::get('foo/bar', 'FooController@index');
Route::get('foo/bar/{id}', 'FooController@show');
Cependant, si vous souhaitez ajouter un middleware, vous devez écrire:
Route::get('foo/bar', ['middleware'=>'auth','uses' => 'FooController@index']);
Route::get('foo/bar/{id}', ['middleware'=>'auth','uses' => 'FooController@show']);
Si vous n'utilisez pas de contrôleur pour votre vue et que vous souhaitez simplement afficher la vue, vous devez procéder comme suit:
Route::get('foo/bar', ['middleware' => 'auth', function () {
return View::make('path.to.your.page');
}]);