cakePHP2.3 Ajaxな投稿画面の処理例
Jsヘルパー使ってAjaxなフォームをビューでつくる コントローラーで処理してAjax用ビューに渡す Ajax用ビューを表示先の要素に表示する
以上でございます。
Ajaxなビュー
<?php echo $this->Form->create('JobFile',array('type'=>'file'));?><table><tr><td>送受信タイプ</td><td><?php echo $this->Form->input('type',array('label'=>false,'type'=>'select','options'=>array('1'=>'送信','2'=>'受信','3'=>'社内向け')));?></td></tr><tr><td>相手(お客様)</td><td><?php echo $this->Form->input('customer_id',array('label'=>false,'type'=>'select','options'=>$customer_list,'empty'=>'お客様ではない',));?></td></tr><tr><td>相手(候補業者様)</td><td><?php echo $this->Form->input('vendor_candidate_id',array('label'=>false,'type'=>'select','options'=>$vendor_candidate_list,'empty'=>'候補業者様ではない',));?></td></tr><tr><td>ファイル</td><td><?php echo $this->Form->input('file',array('label'=>false,'type'=>'file'));?></td></tr></table><?php echo $this->Js->submit('登録',array('url'=>'add','update'=>'#job_file_add_result','buffer'=>false));?><?php echo $this->Form->end();?>
<div id="job_file_add_result"></div>コントローラー
public function add() { if ($this->request->is('post')) { $this->JobFile->create(); $this->JobFile->set($this->request->data); if($this->JobFile->validates()){ if($this->JobFile->save($this->request->data)){ $this->set('success',true); } }else{ $this->set('validation_error', $this->JobFile->validationErrors); } } $this->render('jobfile_add_result','ajax');}表示内容ビュー
<?php if(isset($success)):?><p class="success">データを登録しました。</p>
<?php else:?><p class="error">データ登録ができませんでした。再度お試しください。</p><div class="error">
<?php//バリデーションエラーの表示if(isset($validation_error) && $validation_error){ foreach($validation_error as $error){ foreach($error as $e){ echo $e . '<br>'; } } echo '<br>';}?>
</div><?php endif;?>ちなみに、最初のビューで、ファイル添付できるようになっているが、上記例のコントローラーにファイル登録処理はない。