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

时间:2013-06-03 20:19:26

标签: cakephp autocomplete phpstorm cakephp-2.3

我使用PhpStorm 6.0.2和CakePHP 2.3。

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

/**
 * @property MysuperComponent $Mysuper
 */

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

/**
 * @var $this View
 */

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

/**
 * @property Myelegant $MyelegantHelper 
 */

当我这样做时,这部分起作用:

/**
 * @var $Myelegant MyelegantHelper
 */

我得到此$Myelegant->自动填充功能。但这还不够。我需要像这样的自动完成功能:$this->Myelegant->

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

4 个答案:

答案 0 :(得分:8)

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

<?php

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

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

class HintView extends View {

}

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

/**
 * @var $this HintView
 */

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

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

$this->MyElegant->somefunction()
                  anotherfunction()
                  oldfunction()

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

(请注意,您可以通过创建代码快捷方式来加快速度。例如,转到Settins / IDE Settings / Live Templates。添加新模板。例如“myeleg”代表“$this->MyElegant->”所以当你写“myeleg”并按Tab键它会自动写出类名

答案 1 :(得分:2)

您是否尝试过查看此文章:

http://blog.hwarf.com/2011/08/configure-phpstorm-to-auto-complete.html

请查看“在视图中设置帮助程序自动完成”部分。希望这会有所帮助。

答案 2 :(得分:1)

我知道这是一篇旧帖子,但遇到了同样的问题。解决这个问题:

对我来说,我的自定义助手名为StatusHelper,因此需要 @property ,如下所示:

App::uses('Helper', 'View');
/**
 * @property StatusHelper $Status
 * */
class StatusHelper extends AppHelper {

然后在视图.ctp文件中,我只需要在顶部显示以下内容:

<?php /* @var $this View|StatusHelper */ ?>

现在,自动完成功能适用于我的PHPstorm在该视图中的核心视图变量以及我帮助程序中的任何方法。快乐的日子

使用Cake 2.5 - PHPstorm 10.希望这可以帮助其他人...

答案 3 :(得分:0)

很容易,在CakePHP 3.x中测试到PHPStrom,支持命名空间。

添加到文件views.ctp类型PHPDoc

<?php /** @var $this Cake\View\View  */  ?>