【CakePHP/PhpStorm】ビューテンプレートで、ヘルパーメソッドを補完させる

【CakePHP/PhpStorm】ビューテンプレートで、ヘルパーメソッドを補完させる

パスケースを無くしましたが、ちゃんと戻ってきました、tanakaです。

CakePHP3 になって、DBレコードがEntityで取得できるようになり、名前空間をフル活用することで、IDEの補完がすごくしやすくなりました。 今回はビューテンプレートで、ヘルパーとそのメソッドを補完させる方法を紹介します。

以下のように補完できます。

20160819tanaka-cakephp-compl.png

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 と書かなくても補完できるとなお良いですが…調査中です。

  • このエントリーをはてなブックマークに追加

この記事を読んだ人にオススメ