HOME>WEBプログラム覚書>[CakePHP2.X] HtmlHelper、FormHelper、Viewは直接使わないほうがイイ。

[CakePHP2.X] HtmlHelper、FormHelper、Viewは直接使わないほうがイイ。

別に機能的に問題があるとかそういう話ではなく、デザインだったりフロントをよくいじる人は
高確率で HtmlHelper、FormHelperを拡張したくなるはずです。

なので最初からHtmlHelper、FormHelperを継承したオリジナルのヘルパーを作っておくと楽ですよというだけの話です。

HtmlHelper、FormHelper

view

  1. <?php
  2. // app/View/Helper/AppHtmlHelper.php
  3. App::uses('HtmlHelper', 'View/Helper');
  4.  
  5. class AppHtmlHelper extends HtmlHelper
  6. {
  7. }
  8.  
  9.  
  10. // app/Controller/AppController.php
  11.  
  12. App::uses('Controller', 'Controller');
  13.  
  14. class AppController extends Controller
  15. {
  16.     public $helpers = array('AppHtml');
  17. }
  18.  
  19. ?>

これから作り始める場合はこんな感じ。
今さらおせーよという場合は className で View::Html を別のクラスに変更する事ができます。

controller

  1. <?php
  2. // app/Controller/AppController.php
  3.  
  4. App::uses('Controller', 'Controller');
  5.  
  6. class AppController extends Controller
  7. {
  8.     public $helpers = array(
  9.         'Html' => array('className' => 'AppHtml')
  10.     );
  11. }
  12. ?>

これでビューファイルの $this->Html を修正することなく HtmlHelper を継承した AppHtml を利用することができます。

Viewクラス

メソッド、プロパティの追加できるというメリットはもちろんですが、標準のビュークラスを利用する場合、 コアヘルパーの補完は可能ですが、独自のヘルパーを利用する場合など補完が効きませんので独自のクラスを作って利用したほうが便利です。

app/View/AppView.php

  1. <?php
  2. App::uses('View', 'View');
  3.  
  4. /**
  5.  * Class AppView
  6.  *
  7.  * @property AppHtml $AppHtml
  8.  * @property AppForm $AppForm
  9.  * @property Sidebar $Sidebar
  10.  */
  11. class AppView extends View {
  12.  
  13. }
  14. ?>

app/Controller/AppController.php

  1. <?php
  2. App::uses('View', 'View');
  3.  
  4. class AppController extends Controller
  5. {
  6.  
  7.     public $viewClass = 'App';
  8.  
  9.     public $helpers = array(
  10.         'AppHtml', 'AppForm', 'Sidebar',
  11.     );
  12.  
  13. ?>

これでビューやレイアウトファイルの最初に

ビュー、レイアウト

  1. <?php
  2. /**
  3.  * @var $this AppView
  4.  */
  5. ?>

のように宣言しておけばPhpStormなどのIDEでは $this->Sidebar-> と打ち込むとメソッドのリストが表示されます。

投稿日 2013年11月13日 04:08
カテゴリ PHP
タグ CakePHP
トラックバック URL http://www.kantenna.com/cgi-bin/mt504/mt-tb.cgi/1332

コメント

コメントする
Name
Email Address
URL