我正在尋找最有效的方式來處理這兩個AJAX請求作爲同步請求使用正常的形式。據我所知,有兩種方法可以處理例如新的訂單發佈請求:Laravel Restfull控制器和路由AJAX /同步請求
選項1:AJAX檢查控制器(爲簡單起見,驗證並省略掉)。
//Check if we are handling an ajax call. If it is an ajax call: return response
//If it's a sync request redirect back to the overview
if (Request::ajax()) {
return json_encode($order);
} elseif ($order) {
return Redirect::to('orders/overview');
} else {
return Redirect::to('orders/new')->with_input()->with_errors($validation);
}
在上述情況下,我必須在每個控制器中執行此檢查。第二種情況解決了這個問題,但它看起來對我來說太過矯枉過正。
選項2:讓路由器處理請求檢查並根據請求分配控制器。
//Assign a special restful AJAX controller to handle ajax request send by (for example) Backbone. The AJAX controllers always show JSON and the normal controllers always redirect like in the old days.
if (Request::ajax()) {
Route::post('orders', '[email protected]');
Route::put('orders/(:any)', '[email protected]');
Route::delete('orders/(:any)', '[email protected]');
} else {
Route::post('orders', '[email protected]');
Route::put('orders/(:any)', '[email protected]');
Route::delete('orders/(:any)', '[email protected]');
}
第二個選擇似乎在路由方面的清潔劑給我,但它不是工作量(處理模型的相互作用等)的條款。
溶液(思想家)
思想家的答案是當場上解決了這個問題對我來說。繼承人擴展控制器類的更多細節:
- 在應用程序/庫中創建一個controller.php文件。
- 從思考者的答案複製控制器擴展代碼。
- 轉到應用/配置/ application.php和註釋此行: 「控制器」 =>「Laravel \路由\控制器」,
非常有趣 – BenjaminRH
這是爲我做的。我在擴展控制器方面做了一些額外的研究。原來是小菜一碟。 Laravel讓我驚歎不已。 –