HOME>WEBプログラム覚書>[CakePHP2.X] HtmlHelper、FormHelper、Viewは直接使わないほうがイイ。
[CakePHP2.X] HtmlHelper、FormHelper、Viewは直接使わないほうがイイ。
別に機能的に問題があるとかそういう話ではなく、デザインだったりフロントをよくいじる人は
高確率で HtmlHelper、FormHelperを拡張したくなるはずです。
なので最初からHtmlHelper、FormHelperを継承したオリジナルのヘルパーを作っておくと楽ですよというだけの話です。
HtmlHelper、FormHelper
view
<?php
// app/View/Helper/AppHtmlHelper.php
App::uses('HtmlHelper', 'View/Helper');
class AppHtmlHelper extends HtmlHelper
{
}
// app/Controller/AppController.php
App::uses('Controller', 'Controller');
class AppController extends Controller
{
public $helpers = array('AppHtml');
}
?>
これから作り始める場合はこんな感じ。
今さらおせーよという場合は className で View::Html を別のクラスに変更する事ができます。
controller
<?php
// app/Controller/AppController.php
App::uses('Controller', 'Controller');
class AppController extends Controller
{
public $helpers = array(
'Html' => array('className' => 'AppHtml')
);
}
?>
これでビューファイルの $this->Html を修正することなく HtmlHelper を継承した AppHtml を利用することができます。
Viewクラス
メソッド、プロパティの追加できるというメリットはもちろんですが、標準のビュークラスを利用する場合、
コアヘルパーの補完は可能ですが、独自のヘルパーを利用する場合など補完が効きませんので独自のクラスを作って利用したほうが便利です。
app/View/AppView.php
<?php
App::uses('View', 'View');
/**
* Class AppView
*
* @property AppHtml $AppHtml
* @property AppForm $AppForm
* @property Sidebar $Sidebar
*/
class AppView extends View {
}
?>
app/Controller/AppController.php
<?php
App::uses('View', 'View');
class AppController extends Controller
{
public $viewClass = 'App';
public $helpers = array(
'AppHtml', 'AppForm', 'Sidebar',
);
?>
これでビューやレイアウトファイルの最初に
ビュー、レイアウト
<?php
/**
* @var $this AppView
*/
?>
のように宣言しておけばPhpStormなどのIDEでは $this->Sidebar-> と打ち込むとメソッドのリストが表示されます。
投稿日 |
2013年11月13日 04:08 |
カテゴリ |
PHP |
タグ |
CakePHP |
トラックバック URL |
http://www.kantenna.com/cgi-bin/mt504/mt-tb.cgi/1332 |
コメント