只是想知道這是否是編寫Ajax代碼與Laravel路線互動的好方法?Laravel Ajax控制器與單一路線
示例我的應用程序需要列出所有客戶數據,並通過ajax列出所有國家/地區。我有3個控制器ApiController,CustomerController,CountryController。
所以在我的routes.php文件我有這個路線
路線::獲得( 'API/V1/AJAX/JSON/{類}/{}功能', '阿比\ V1 \ ApiController @ ajaxreturnjson' );
在ApiController.php中,我有下面的函數來調用其他控制器函數來返回我需要的數據。
class ApiController extends Controller
{
public function ajaxreturnjson(Request $request, $controller, $function){
$input = $request->input();
if($request->input('namespace') != ''){
$namespace = $request->input('namespace');
unset($input['namespace']);
}else{
$namespace = 'App\Http\Controllers';
}
$data = array();
try {
$app = app();
$controller = $app->make($namespace.'\\'.$controller);
$data = $controller->callAction($function, array($request)+$input);
} catch(\ReflectionException $e){
$data['error'] = $e->getMessage();
}
return response()->json($data);
}
}
所以例如使用AJAX,我只需要類名,命名空間,也函數名傳遞給一個AJAX網址。
檢索所有客戶信息的示例。
$.ajax({
dataType:"json",
url:"api/v1/ajax/json/CustomerController/getList",
data:"namespace=\\App\\Http\\Controllers\\",
success:function(data){
}
})
所以用這種方法,我不必爲不同的ajax請求創建這麼多的路由。
但我不確定這是否會導致任何安全問題,或者這是一個糟糕的設計?
把你的問題放在'codereview'上。 – linuxartisan