[解決済み] Laravel - Route::リソースとRoute::コントローラの比較
質問
Laravelのウェブサイト、Stack Overflow、Googleのドキュメントを読みましたが、以下の違いがまだわかりません。
Route::resource
と
Route::controller
.
ある回答では、Route::resourceはくずのためのものだと言っていました。しかし、Route::controllerを使えば、Route::resourceと同じことを実現でき、必要なアクションだけを指定することができるのです。
兄弟のように見える。
Route::controller('post','PostController');
Route::resource('post','PostController');
何を使うか、どう選ぶか?良い方法とは何でしょうか?
どのように解決するの?
RESTful リソースコントローラ
A RESTful リソースコントローラ は、あなたのためにいくつかのデフォルトルートを設定し、名前まで付けます。
Route::resource('users', 'UsersController');
これらの名前付きルートを提供します。
Verb Path Action Route Name
GET /users index users.index
GET /users/create create users.create
POST /users store users.store
GET /users/{user} show users.show
GET /users/{user}/edit edit users.edit
PUT|PATCH /users/{user} update users.update
DELETE /users/{user} destroy users.destroy
そして、次のようなコントローラを設定します(アクション = メソッド)。
class UsersController extends BaseController {
public function index() {}
public function show($id) {}
public function store() {}
}
また、このようにどのようなアクションを含めるか、含めないかを選択することができます。
Route::resource('users', 'UsersController', [
'only' => ['index', 'show']
]);
Route::resource('monkeys', 'MonkeysController', [
'except' => ['edit', 'create']
]);
API リソースコントローラ
Laravel 5.5では、リソースコントローラーのルートを扱うための別の方法が追加されました。
APIリソースコントローラ
は上図のように動作しますが
create
と
edit
のルートになります。これはRESTfulなAPIで使われるルートを簡単にマッピングするために使われるものです。
create
また
edit
メソッドを使用します。
Route::apiResource('users', 'UsersController');
RESTful Resource Controllerのドキュメント
暗黙のコントローラ
について 暗黙のコントローラ はより柔軟です。HTTP リクエストの種類と名前に基づいて、コントローラのメソッドにルーティングされます。しかし、ルート名は定義されていないので、同じルートに対するすべてのサブフォルダをキャッチすることになります。
Route::controller('users', 'UserController');
は、一種のRESTfulな命名規則でコントローラを設定するように導くでしょう。
class UserController extends BaseController {
public function getIndex()
{
// GET request to index
}
public function getShow($id)
{
// get request to 'users/show/{id}'
}
public function postStore()
{
// POST request to 'users/store'
}
}
必要なものを、好みに合わせて使うのが良いと思います。個人的には
暗黙のコントローラ
というのも、この方法は煩雑で、名前を提供せず、また
php artisan routes
. 私は通常
RESTful Resource コントローラ
を明示的なルートと組み合わせて使用します。
関連
-
[解決済み] PHP Composerを使ってLaravelからパッケージを削除するにはどうしたらいいですか?
-
[解決済み] Laravelでカスタムヘルパー関数を作成する方法
-
[解決済み] Laravelで特定のマイグレーションをロールバックする
-
[解決済み】Laravel Redirect Back with()メッセージ
-
[解決済み】Laravel - モデル、コントローラ、マイグレーションを1つのartisanコマンドで作成する。
-
[解決済み] Laravel Eloquent "WHERE NOT IN" (ララベル・エロクエント "WHERE NOT IN")について
-
[解決済み] Eloquentを使用してテーブルのすべての行を削除する方法は?
-
[解決済み] Laravelでリソースコントローラーに新しいメソッドを追加する
-
[解決済み] Laravel - Route::リソースとRoute::コントローラの比較
-
[解決済み] laravelでリクエストパラメータの値を変更する方法
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Laravel Redirect Back with()メッセージ
-
[解決済み】Laravel - モデル、コントローラ、マイグレーションを1つのartisanコマンドで作成する。
-
[解決済み] Laravel Eloquent "WHERE NOT IN" (ララベル・エロクエント "WHERE NOT IN")について
-
[解決済み] Eloquentを使用してテーブルのすべての行を削除する方法は?
-
[解決済み] php artisan.phpのサーブのポートを設定します。
-
[解決済み] Laravel 5.2 Multi Authを例題付きで解説してくれる人はいませんか?
-
[解決済み] Eloquent - と等しくない場合
-
[解決済み] Laravel - Route::リソースとRoute::コントローラの比較
-
[解決済み] Laravel 4のヘルパーと基本関数のベストプラクティス?
-
[解決済み] laravelでリクエストパラメータの値を変更する方法