読者です 読者をやめる 読者になる 読者になる

Motomichi Works Blog

その日学習したことについて書いている日記です。誰かの役に立ったらそれはそれで嬉しいです。

さくらvpsとcakephp2.6.7で開発日記 その0007 Helperを自作する

制作 cakephp

参考にさせて頂いたページ

ヘルパー — CakePHP Cookbook 2.x ドキュメント

最も簡易的な構造で作ってみる

View/Helper/ExampleHelper.phpの作成とその記述内容

例として以下の通り。

<?php
// AppHelperの使用を宣言
App::uses('AppHelper', 'View/Helper');
// AppHelperを継承して、ExampleHelperクラスを作成
class ExampleHelper extends AppHelper {
  // hogeメソッドを定義
  public function hoge($text = 'デフォルト設定文字列') {
    // 引数$textをhtml要素と結合する
    $html = '<div class="foo">' . $text . '</div>';
    return $html;
  }
}

任意のControllerに記述する内容

public $helpers = array('Example');

Viewに記述する内容

例として以下の通り。

<?php
  // 引数の初期値を利用しない場合のView記述
  echo $this->Example->hoge('サンプルテキスト');
?>

<?php
  // 引数の初期値を利用する場合のView記述
  echo $this->Example->hoge();
?>

cakephpのHelperを内包させて作ってみる

View/Helper/LinkHelper.phpの作成とその記述内容

例として以下の通り。

<?php
// AppHelperの使用を宣言
App::uses('AppHelper', 'View/Helper');
// AppHelperを継承して、LinkHelperクラスを作成
class LinkHelper extends AppHelper {
  // cakephpのHtmlヘルパーを使用することを宣言
  public $helpers = array('Html');
  // myLinkメソッドを定義
  public function myLink($title, $url, $options = array('class' => 'hoge')) {
    // $linkに返り値を格納
    $link = $this->Html->link($title, $url, $options);
    // 自分が追加したい要素を追加して、$linkに格納
    $link = '<div class="editOuter">' . $link . '</div>';
    return $link;
  }
}

任意のControllerに記述する内容

public $helpers = array('Link');

Viewに記述する内容

例として以下の通り。

<?php
  // 引数の初期値を利用しない場合のView記述
  echo $this->Link->myLink(
    'Change this Recipe',
    'http://book.cakephp.org/2.0/ja/views/helpers.html',
    array(
      'id' => 'example_id'
    )
  );
?>

<?php
  // 引数の初期値を利用する場合のView記述
  echo $this->Link->myLink(
    'Change this Recipe',
    'http://book.cakephp.org/2.0/ja/views/helpers.html'
  );
?>