これがLaravelルートとやりとりするためのajaxコードを書く良い方法であるかどうか疑問に思っていますか?単一ルートの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のURLにクラス名、名前空間とも関数名を渡す必要があります。
すべての顧客情報を取得する例。
$.ajax({
dataType:"json",
url:"api/v1/ajax/json/CustomerController/getList",
data:"namespace=\\App\\Http\\Controllers\\",
success:function(data){
}
})
このように、私は別のAjaxリクエストに対して非常に多くのルートを作成する必要はありません。
これがセキュリティ上の問題を引き起こすかどうか、またはこれが悪い設計であるかどうかはわかりません。
あなたの質問を 'codereview'に載せてください。 – linuxartisan