Функция Laravel 5 () не найдена
Я создаю сайт, на котором есть защищенный раздел, где пользователи должны войти в систему для доступа. Я сделал это в Laravel 4 без особых происшествий. Однако, хоть убей, я не могу понять, почему я не могу заставить его работать в Laravel 5(L5).
В L5 было/было введено промежуточное программное обеспечение. Это изменит файл маршрута на:
Route::get('foo/bar', ['middleware'=>'auth','FooController@index']);
Route::get('foo/bar/{id}', ['middleware'=>'auth','FooController@show']);
Маршрут работает нормально, пока не включено промежуточное программное обеспечение.
Когда доступ к маршруту осуществляется с помощью промежуточного программного обеспечения, однако результат не так уж и забавен.
Упс, похоже, что-то пошло не так.
Исключение отражения в маршруте.строка 150 php:
Функция () не существует
Любое понимание, помощь и/или содействие очень ценятся. Я прошелся по Гуглу и не смог найти ничего, что имело бы отношение к моему нынешнему положению. Заранее спасибо.
3 answers
Вы забыли ключ uses
:
Route::get('foo/bar/{id}', ['middleware'=>'auth', 'uses'=>'FooController@show']);
Если вы добавляете в свои маршруты что-то большее, чем метод контроллера, вам нужно добавить uses
в качестве ключа массива для вашего контроллера, поэтому, например, если у меня нет промежуточного программного обеспечения, достаточно написать:
Route::get('foo/bar', 'FooController@index');
Route::get('foo/bar/{id}', 'FooController@show');
Однако, если вы хотите добавить промежуточное программное обеспечение, вам нужно написать:
Route::get('foo/bar', ['middleware'=>'auth','uses' => 'FooController@index']);
Route::get('foo/bar/{id}', ['middleware'=>'auth','uses' => 'FooController@show']);
В случае, если вы не используете контроллер для своего представления и просто хотите отобразить представление, вам следует сделать следующее:
Route::get('foo/bar', ['middleware' => 'auth', function () {
return View::make('path.to.your.page');
}]);