PHPStorm在视图文件中自动完成CakePHP自定义帮助程序

tra*_*nte 8 cakephp autocomplete phpstorm cakephp-2.3

我使用PhpStorm 6.0.2和CakePHP 2.3.

在我的控制器文件中,我定义了这个并获得自定义组件的自动完成:

/**
 * @property MysuperComponent $Mysuper
 */
Run Code Online (Sandbox Code Playgroud)

关于这一点,在我的视图文件中,我定义了这个以达到Cake的核心助手,这有效:

/**
 * @var $this View
 */
Run Code Online (Sandbox Code Playgroud)

我需要在视图中自动完成自定义帮助程序.我尝试了这个但是没有用:

/**
 * @property Myelegant $MyelegantHelper 
 */
Run Code Online (Sandbox Code Playgroud)

当我这样做时,这部分工作:

/**
 * @var $Myelegant MyelegantHelper
 */
Run Code Online (Sandbox Code Playgroud)

我得到了这个$Myelegant->自动完成功能.但这还不够.我需要像这样的自动完成:$this->Myelegant->

注意:自动完成功能成功地适用于视图(ctp)文件中的核心帮助程序.但不适合自定义助手.

tra*_*nte 8

添加新文件/app/View/HintView.php
在PHPDoc上添加自定义帮助程序的名称.

<?php

App::uses('View', 'View');

/**
 * @property MyelegantHelper $Myelegant
 * */

class HintView extends View {

}
Run Code Online (Sandbox Code Playgroud)

在布局文件或视图文件(ctp文件)中,将此代码添加到顶部

/**
 * @var $this HintView
 */
Run Code Online (Sandbox Code Playgroud)

现在在您的视图中,您可以看到如下:

$this->MyElegant
     ->Blocks
     ->Cache
     ->Form

$this->MyElegant->somefunction()
                  anotherfunction()
                  oldfunction()
Run Code Online (Sandbox Code Playgroud)

您不必从HintView扩展您的视图.它仅适用于PhpStorm的自动完成功能.

(请注意,您可以通过创建代码快捷方式来加快速度.例如,转到Settins/IDE设置/ 实时模板.添加新模板.例如"myeleg"for" $this->MyElegant->"所以当你写"myeleg"并按Tab键时它会自动写类名)