web-dev-qa-db-ja.com

Laravel 5 Function()not found

私は、ユーザーがアクセスするためにログインする必要がある保護されたセクションを持つサイトをまとめています。私はこれをLaravel 4であまり問題なく実行しました。しかし、私にとっては、なぜLaravel 5(L5)。

L5では、ミドルウェアが導入されました。これにより、ルートファイルが次のように変更されます。

Route::get('foo/bar', ['middleware'=>'auth','FooController@index']);
Route::get('foo/bar/{id}', ['middleware'=>'auth','FooController@show']);

ミドルウェアが含まれていない限り、ルートは正常に機能します。

しかし、ミドルウェアを使用してルートにアクセスすると、結果はそれほど面白くありません。

おっと、何かがおかしかったようです。

Route.php行150のReflectionException:

関数()は存在しません

洞察、助け、および/または支援は非常に高く評価されています。私はグーグルのサーキットを行ったが、現在の苦境に関連するものを見つけることができなかった。前もって感謝します。

34
joseph

usesキーを忘れました:

Route::get('foo/bar/{id}', ['middleware'=>'auth', 'uses'=>'FooController@show']);
84
manix

コントローラーメソッド以外をルートに追加する場合は、コントローラーの配列のキーとして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']);
8

ビューにコントローラーを使用せず、ビューを表示するだけの場合は、次のようにする必要があります。

Route::get('foo/bar', ['middleware' => 'auth', function () {
    return View::make('path.to.your.page');
}]);
5
paulalexandru