FC2ブログ

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

[CakePHP] 各 view で共通の処理を書きたい場合

CakePHPアプリにおいて、いくつかの view で共通の処理を書きたい場合、アプリ独自の "Helper" を作って、
そこに共通処理を書くと良い。


例えば、https:// なリンクタグを吐き出す独自ヘルパを書くなら、次のようにする。
ソースファイルは app/views/helpers/html_ex.php に置く。


【標準HtmlHelperから派生する方法】

App::import('Helper', 'Html');

class HtmlExHelper extends HtmlHelper {

function secureUrl($url) {
return str_replace('http://', 'https://', parent::url($url, true));
}
function secureLink($label, $url) {
return parent::link($label, self::secureUrl($url));
}
}




【標準HtmlHelperに委譲する方法】

class HtmlExHelper extends AppHelper {

var $helpers = array('Html');

function secureUrl($url) {
return str_replace('http://', 'https://', $this->Html->url($url, true));
}
function secureLink($label, $url) {
return $this->Html->link($label, self::secureUrl($url));
}
}




これを使う側としては、例えば app_controller.php で以下のように書く。

class AppController extends Controller {

function beforeFilter() {
$this->helpers[] = 'HtmlEx';
}
}


これにより、.ctp 内で、$this->HtmlEx->secureLink('/hoge'); などと書ける。



上記の例では、標準 HtmlHelper に関わる機能だったので、HtmlHelper を使っているのだけど、
標準機能とは全く関係ない、独自処理を書きたい場合は単に以下のようなもので良い。


class HogeHelper extends AppHelper {
function hogeHoge($param) {
// do something
}
}

スポンサーサイト
コメント

管理人のみ閲覧できます

このコメントは管理人のみ閲覧できます
コメントの投稿
管理者にだけ表示を許可する

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。