只是想知道这是否是编写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