Pocket
LINEで送る

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;?>

ちなみに、最初のビューで、ファイル添付できるようになっているが、上記例のコントローラーにファイル登録処理はない。

Pocket
LINEで送る

カテゴリー: プログラミング

コメントください

関連記事

プログラミング

Go言語によるビットコインのフルノード実装btcdを調べる(2)

btcdを実行した際のプログラムの流れを最初から確認してみます。 se 続きを読む …

プログラミング

Go – leveldb

Goで使えるLevelDB。 syndtr/goleveldb ドキュ 続きを読む …

%d人のブロガーが「いいね」をつけました。