2016-05-24 12 views
2

Laravelリソースコントローラを使用してモックアップAPIを構築すると、get createを呼び出すときにデフォルトのLaravelリソースルートをオーバーライドするまで上手く動作しますが、Laravelは上書きを受け付けません。ドキュメントには次のように記載されています。Laravel 5.2デフォルトの動作をオーバーライドするリソースルーティング

デフォルトのリソースルートを超えてリソースコントローラに追加のルートを追加する必要がある場合は、Route :: resourceの呼び出し前にこれらのルートを定義する必要があります。それ以外の場合は、リソースの方法で定義されたルートが意図せずにあなたの補足のルートよりも優先されることがあります。私のコードで

を、私は、次のしている:

routes.phpの

Route::group(['prefix' => 'api/v1', 'middleware' => 'cors'], function() { 
    Route::get('test/create', 'V1\Universal\[email protected]'); 
    Route::resource('test', 'V1\Universal\TestController'); 
}); 

TestController.php

public function create2() 
{ 
    return "create 2 override function"; 
} 


public function create() 
{   
    return "create default function"; 
} 

API/api/v1/test /を呼び出すと、常にcreate()メソッドが呼び出されます。 n create2()メソッド。 Laravelのドキュメントによると、私のカスタム追加ルートは、リソースの前に定義されているように優先されるべきです。

すべてのアイデア?

答えて

1

リソースルートを上書きする場合は、Route::resourceの後に追加する必要があります。ドキュメントからの引用ではなく、それらを上書きする方法については、ルート資源化にルートを追加する方法について指示します。

それはあなたがすべき、デフォルトのリソースのルートを超えたリソース コントローラに追加のルートにを追加に必要になった場合Route :: resourceの呼び出しの前にそれらの ルートを定義してください。それ以外の場合は、リソースの方法で定義されたルート は、意図せずにあなたがまたexcept引数を使用することができ、あなたの補足のルート

に優先 がかかることがあります。

Route::group(['prefix' => 'api/v1', 'middleware' => 'cors'], function() { 
    Route::get('test/create', 'V1\Universal\[email protected]'); 
    Route::resource('test', 'V1\Universal\TestController', ['except' => ['create']]);); 
}); 

をこの場合Route::resourcecreateルートを作成しません。

関連する問題