cakePHP2.3 エレメントからコントローラーにアクセスする(requestAction)

Pocket
LINEで送る

エレメント(例:/Elements/job/sub_search_box.ctp)の中で、下記のように使う。これでエレメントを表示する前に、コントローラーにアクセスして必要な情報を取ってきてくれる。

<?php $list = $this->requestAction('/jobs/get_list') ?>

上記の/jobs/get_listのコントローラーの内容は、下記のような感じになる。
通常のURLとしてアクセスされると困るので、$this->request->param[‘requested’]が空の場合はありませんエラーを出している。

public function get_list(){
	if (empty($this->request->params['requested'])) {
		throw new ForbiddenException();
	}
	$list =  $this->get_lists_array($this->name_list);
	$list['time_option'] = $this->get_job_time_option();
	return $list;
}

エレメントを表示するビューは下記のようになる。
エレメントを表示する度にコントローラにアクセスすると重くなるので、キャッシュを使っている。下記のように使える。

<?php echo $this->element('jobs/sub_search_box', array('cache' => '+10 hour')); ?>
Pocket
LINEで送る

コメントください

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください