【CakePHP/PhpStorm】ビューテンプレートで、ヘルパーメソッドを補完させる
パスケースを無くしましたが、ちゃんと戻ってきました、tanakaです。
CakePHP3 になって、DBレコードがEntityで取得できるようになり、名前空間をフル活用することで、IDEの補完がすごくしやすくなりました。 今回はビューテンプレートで、ヘルパーとそのメソッドを補完させる方法を紹介します。
以下のように補完できます。
APP_ROOT/View/AppView.php
ビューテンプレート内でヘルパーにアクセスするときは $this->SomeHelper->hoge()
という感じでアクセスしますが、
$this
はAppViewクラスのインスタンスです。なので、まず、AppViewクラスのPhpDocコメントに@property
で、
ヘルパーオブジェクトをメンバに持つということを明示します。
<?php
namespace App\View;
use Cake\View\View;
/**
* @property \App\View\Helper\AppHtmlHelper $AppHtml
* @property \Cake\View\Helper\PaginatorHelper $Paginator
*/
class AppView extends View
{
public function initialize()
{
$this->loadHelper('AppHtml');
$this->loadHelper('Paginator', ['templates' => 'paginator-templates']);
}
}
APP_ROOT/Template/Hoge/fuga.ctp
あとは、各テンプレートで、 $this
がAppViewクラスだというコメントを書きましょう。
(@var \App\View\AppView $this
の部分)
そうすると、$this->
まで打ったときにヘルパーが補完されますし、$this->Paginator->
でメソッドが補完されます。
<?php
/**
* @var \App\View\AppView $this
*/
// ...
// PaginatorHelperの補完が効きます!
$this->Paginator->
まとめ
打鍵数は少ない方がよいです。
@var \App\View\AppView $this
と書かなくても補完できるとなお良いですが…調査中です。