resourceを使い始めて、まず思うのは、いつもいつも index, store, create, edit, update, destroyの一式が必要というわけではないことです。
例えば、以下のようなレポートタイプのコントローラなら、
indexだけで十分なので、以下のようにonly
を使い他のrouteを無効にします。
Route::resource('ranking', 'RankingController.php', ['only' => ['index']]);
また、追加と編集だけで、削除が要らないコントローラなら、except
を使い、index, store, create, edit, updateだけの使用を可能にします。
Route::resource('no_destroy', 'NoDestroyController.php', ['except' => ['destroy']]);
便利ですね。
さらに、 index, store, create, edit, update, destroyだけでないrouteが必要なときもあります。
例えば、先の「売上ランキング」のレポートに、結果をCSVでダウンロードしたいとします。
今のところ、index
しか使用していないので、store
でも使う?
しかし、名前がいまひとつ。理想は、ranking/download
としたいです。
このような場合は、
Route::get('admin/ranking/download', 'RankingController@download'); Route::resource('admin/ranking', 'RankingController', ['only' => ['index']]);
と、独自のrouteをRoute::resource
の前に追加します。
php artisan route:list
の出力は、
+--------+-----------+-------------------------+------------------------+-------------------------------------------------------+ | Domain | Method | URI | Name | Action | +--------+-----------+-------------------------+------------------------+-------------------------------------------------------+ | | GET|HEAD | admin/ranking | admin.ranking.index | App\Http\Controllers\Admin\RankingController@index | | | GET|HEAD | admin/ranking/download | | App\Http\Controllers\Admin\RankingController@download |メルマガ購読の申し込みはこちらから。
参考になりました。
Route::group([‘prefix’〜の中に、
Route::resourceを書いて、
さくっとパス指定を望み通りにできました。
ありがとうございした。
mashshshさん、コメントありがとうございます。Routeに関しての新投稿あります。そちらも役に立てば、と思います。