Ajax通信時にjava scriptでDOMを構築するのは、めんどくさい手間がかかる上に、ソースがややわかりづらくなってしまい気味なので、laravelで生成済みのViewを返してjQueryで差し込むだけにしてしまおうというお話。
といっても、そう難しい話ではなく、Ajaxのレスポンスを生成する際に、RenderしたViewをjson_encodeして返してあげるだけ。
return json_encode(
'view' => view::make('hoge', [
'hoge' => $hoge
'fuga' => $fuga
)->render()
);
ポイントは、encode時に->render()してあげること。
配列で複数のViewを返すこともできるので、複数個所のhtmlを同時に書き換えることも可能。
return json_encode(
'view1' => view::make('hoge1', [
'hoge1' => $hoge1
'fuga1' => $fuga1
)->render(),
'view2' => view::make('hoge2', [
'hoge2' => $hoge2
'fuga2' => $fuga2
)->render()
);
Viewを入れたjsonを返す時は通常のjsonよりも通信量が多くなるため、Viewの内容によって使い分ける。