リソースコントローラーには次の方法があることを理解しています
index
show
create
edit
store
update
destroy
ここで、リソースアクションに加えて、実行する必要のある次のアクションがあるとします。
リソースコントローラーは上記の機能には役に立ちませんか? APIをプログラミングする場合、私は明らかにインデックス、表示、編集、作成、破棄...だけでなく、ログイン、検索、検索なども必要です...
両方のタイプのコントローラーにルーティングすることは可能ですか?例えば.
Route::group(['prefix' => 'api'], function() {
Route::group(['prefix' => 'v1'], function() {
// Resource Controller
Route::resource('posts', 'Api\V1\PostsResourceController');
// Restful Controller
Route::controller('posts', 'Api\V1\PostsController');
});
});
または、リソースコントローラーを忘れて、代わりにRESTfulコントローラーを使用する必要がありますか?
リソースコントローラーを使用するだけです 他のメソッドを同じコントローラーに追加し、それらのメソッドにルートを直接追加します :
_Route::group(['prefix' => 'api'], function()
{
Route::group(['prefix' => 'v1', 'namespace' => 'Api\V1'], function()
{
// Add as many routes as you need...
Route::post('login', 'PostsResourceController@login');
Route::get('find', 'PostsResourceController@find');
Route::get('search', 'PostsResourceController@search');
Route::resource('posts', 'PostsResourceController');
});
});
_
P.S。私は一般的にRoute::controller()
の使用を躊躇します。 あいまいすぎます 。
リソースコントローラーに関連する問題の1つは、名前付きルートを使用している場合です。グループプレフィックスを使用すると、すべてが大きな混乱になります。プレフィックスに小さな変更を加える場合は、ビューとコントローラー全体で変更を加える必要があります。つまり、名前付きルートの全力を発揮することはできません。
laravelアプリを開発するときは、このモデルに従います。
Route::group( [ 'prefix' => 'admin' ], function(){
Route::resource('pages', 'PageController', [
'names' => [
'show' => 'page',
'edit' => 'page.edit'
],
'only' => [
'show',
'edit'
]
]);
});
そのため、次の利点があります。
プレフィックスやリソース名を変更しても、構文を使用して快適にURLを生成できます。URLは影響を受けません。
URL::route('page', array($id))