ajaxを使います。
/user/index で、Userと紐付くStudentをajaxを使って取得する。
データの取得は、/user/ajax_get_students/ から行うと仮定。
・/user/index.ctp
下のようなプルダウンでユーザを選択する。
ajaxリクエスト関数を用意。
戻ってきたdata展開の処理は省きます。
$("#userselect").change(){ var userid = $(this).val(); $.ajax({ type:"POST", url: "Html->url(array('controller' => 'user', 'action' => 'ajax_get_students')); ?>", data: { 'user_id': userid, }, success:function(data){ console.log(data); }, error :function(XMLHttpRequest,textStatus){ console.log(textStatus); } }); }
コントローラ。
・UsersController
class ・UsersController extends AppController { public $components = array('RequestHandler'); public function ajax_get_students($id = null) { if($this->RequestHandler->isAjax()){ $user_id = (isset($_POST['user_id']))? h($_POST['user_id']) : ""; // get student info. $students = $this->Student->find('all', array( 'conditions' => array('Student.user_id =' => $user_id ), )); // viewにはjson形式のファイルを表示させるように。 $this->layout = 'ajax'; $this->RequestHandler->setContent('json'); $this->RequestHandler->respondAs('application/json; charset=UTF-8'); // $studentsの配列をviewに渡す。 $this->set('students', $students); } } }
ビュー。
・ajax_get_students.ctp
echo json_encode($statuses);
以上!