2014-04-16 52 views
1

我使用PHP的laravel框架development.I做以下這些步驟 路由在laravel框架

  1. 我在路由文件中定義Route::resource('users', 'UsersController');,然後定義Route::get('user/pingme', '[email protected]');

  2. 當我做一個GET調用pingme函數,它不起作用。我得到了response code is 200,但pingme函數中的代碼沒有工作,我不知道爲什麼。

  3. 然後我改成了Route::post('user/pingme', '[email protected]');在需要時工作正常。

  4. 然後我所做的是,刪除Route::resource('users', 'UsersController');,並再次獲得路線ping我的功能,並打電話,它開始工作正常。

所以這是在框架(罕見的事情)的任何錯誤,或者我失去了一些東西(可能是)?幫我....

+1

你確定你需要使用'路線::資源()'在這種情況下?它只與資源控制器一起使用。 – silkfire

+0

是在用戶控制器中,我是創建存儲用戶,更新用戶。 – user3522412

+0

請顯示相關代碼。 –

回答

1

路由文件的工作方式如下: -

  1. 如果你已經寫了控制器的映射而已,那麼它需要以犧牲其他所有路由映射的底部,否則你的程序控制器將挑選來自用戶的路線控制器,並將重定向到UserController。 所以所有路線的正確順序是: -

    Route :: get('user/pingme','UserController @ pingme');

    路線::交( '用戶/註銷', '@ UserController的註銷') - >之前( 'AUTH');

    路線::資源( '用戶', 'UserController的');

OR

Route::post('user/logout', '[email protected]')->before('auth'); 

Route::get('user/pingme', '[email protected]'); 

Route::resource('user', 'UserController'); 
0

在你的路線文件,路線的訂單需要如下:

Route::get('user/pingme', '[email protected]'); 

Route::post('user/logout', '[email protected]')->before('auth'); 

Route::resource('user', 'UserController'); 

如果Route::resource('user', 'UserController')而來的其他路線前,GET請求user/pingme將被處理由show方法內UserController,因爲它是如何豐富的控制器工作。因此,userRoute::resource需要遵循user/前綴的所有其他路線。