1

cmsプロジェクトにlaravel 4を使用していますが、ルートに問題があります...

これらは私の現在のルートです

Route::get('/', 'IndexController@showNews');
Route::get('/logout', 'UserController@logout');
Route::resource('/login', 'UserController');
Route::resource('/user', 'UserController@index');
Route::resource('/user/{route}', 'UserController');


// Routes that shows us the pages...
Route::get('/{page}', 'IndexController@showPage');
Route::get('/{page}/{id}', 'IndexController@showPage');

ユーザールートには、ユーザー情報をルーティングするカスタムルーターがありますが、実際には問題ありません。しかし、それはすべてうまく機能しますが、テストページにリンクする「/test」に移動しようとすると、このエラーが発生します。

Route pattern "/user/{route}/{{route}}" cannot reference variable name "route" more than once.

それはルーターのロジックになります。私はlaravelにはかなり慣れていません。この問題を回避する方法はありますか? これは、user/route ワイルドカードと /route ワイルドカードの衝突です。

4

1 に答える 1

7
Route::resource('/user', 'UserController@index');
Route::resource('/user/{route}', 'UserController');

問題はRoute::resource、ルートを宣言するために を使用しRoute::resourceているのに対し、実際には、Laravel によって自動的に処理されるアクションのテーブルを含む RESTful コントローラーを宣言していることです。あなたはそれを間違って使用しています。

ドキュメントを参照して、バックグラウンドで処理されるルートを確認してください (したがって、競合の原因):

「リソース コントローラーによって処理されるアクション」という表を見てください。

テーブル内にないルート ハンドラーについては、別のルートを宣言する必要があります。何かのようなもの:

Route::get('foo/filter/{filterName}/{filterValue}',
        array('as'=>'filteredroute','uses'=>'FooController@filter'))

要約すると、Route::resource迅速なCRUD RESTfulアクセスが可能になります。

于 2013-10-26T15:41:13.257 に答える