只是想知道这是否是编写ajax代码以与Laravel路由交互的好方法?
示例我的应用程序需要列出所有客户数据,并通过ajax列出所有国家/地区。我有3个控制器ApiController,CustomerController,CountryController。
所以在我的routes.php中我有这条路线
text-transform: capitalize;
在ApiController.php中,我有以下函数来调用其他控制器函数来返回我需要的数据。
Route::get('api/v1/ajax/json/{class}/{function}', 'Api\v1\ApiController@ajaxreturnjson');
所以使用ajax的例子,我只需要将类名,命名空间和函数名称传递给ajax url。
检索所有客户信息的示例。
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请求创建这么多路由。
但我不确定这是否会导致任何安全问题,或者这是一个糟糕的设计?
答案 0 :(得分:1)
就个人而言,我不会这样做。当然,你可以这样做,但它不是非常语义和调试它可能是一种痛苦。
此外,如果其他人开始处理该项目,当他们查看您的路线文件时,他们将不知道您的应用程序的结构或去往何处查找。
我认为每件事都有一个控制器更好。