6月 07

25.検索結果CSVダウンロード

go @ 7:00 AM

検索結果をCSVでダウンロードする処理を追加します。
検索の処理部分は全く同じで言い訳ですから、同じadmin_serchアクションに、またモードを指定して、ダウンロードモードの時はCSVにするようにします。

まず、レイアウトとビューを用意しておきます。
/app/views/layouts/csv.ctp
を新規作成して、

<?php
	header('content-type: text/plain');
	header("Content-Type: application/octet-stream");
	header("Content-Disposition: attachment; filename=member.csv");
?>
<?php echo $content_for_layout; ?>

とします。
ビューは、
/app/views/members/admin_download.ctp
として、

<?php foreach ($members as $member): ?>
<?php echo $member['Member']['id']; ?>
	<?php echo $member['Member']['email']; ?>
	<?php echo $member['Member']['password']; ?>
	<?php echo $member['Type']['name']; ?>
	<?php echo $time->format($format = 'Y/m/d', $member['Member']['birthday']); ?>
	<?php echo $time->format($format = 'Y/m/d', $member['Member']['created']); ?>

<?php endforeach; ?>

このように書いておきます。

で、会員検索のビュー、admin_search.ctp に以下を追加しておきます。

<p><?php echo $paginator->link(__('CSVダウンロード', true), array('mode'=>'DL')); ?></p>

こうするとリンクに引数を渡せます。

で、コントローラ members_controller.php のadmin_searchアクションの一番下に、

		if ((isset($this->passedArgs['mode'])) && ($this->passedArgs['mode'] == 'DL')) {
			Configure::write('debug', 0);
			$this->layout = 'csv';
			$data = $this->Member->find('all',  array(
				'order'=>array('Member.id'),
				'conditions' => $conditions
			));
			$this->set("members", $data);
			$this->render('admin_download');
		}

を追加します。 mode=”DL” で来た時は $conditions だけ引き継いで検索し直してる感じですかね。

>>次のページ「AJAXファイルアップロード」へ

Comments are closed.

here comes