查看文件中CakePHP自定义帮助程序的PHPStorm自动完成

查看文件中CakePHP自定义帮助程序的PHPStorm自动完成,cakephp,autocomplete,phpstorm,cakephp-2.3,Cakephp,Autocomplete,Phpstorm,Cakephp 2.3,我使用PHPStorm6.0.2和CakePHP2.3 在我的控制器文件中,我定义了这一点,并为我的自定义组件获取自动完成: /** * @property MysuperComponent $Mysuper */ 关于,在我的视图文件中,我将其定义为达到Cake的核心帮助者,这是有效的: /** * @var $this View */ 我需要在视图中为自定义帮助程序自动完成。我试过了,但没有成功: /** * @property Myelegant $MyelegantHelp

我使用PHPStorm6.0.2和CakePHP2.3

在我的控制器文件中,我定义了这一点,并为我的自定义组件获取自动完成:

/**
 * @property MysuperComponent $Mysuper
 */
关于,在我的视图文件中,我将其定义为达到Cake的核心帮助者,这是有效的:

/**
 * @var $this View
 */
我需要在视图中为自定义帮助程序自动完成。我试过了,但没有成功:

/**
 * @property Myelegant $MyelegantHelper 
 */
当我这样做时,这部分起作用:

/**
 * @var $Myelegant MyelegantHelper
 */
我得到这个
$Myelegant->
自动完成。但这是不够的。我需要这样的自动完成:
$this->Myelegant->


注意:Autocomplete成功用于核心帮助程序内部视图(ctp)文件。但不适用于自定义帮助人员。

您是否阅读过这篇文章:


请参阅“在视图中设置辅助对象自动完成”一节。希望这能有所帮助。

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

<?php

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

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

class HintView extends View {

}
现在在视图中,您可以看到如下所示:

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

$this->MyElegant->somefunction()
                  anotherfunction()
                  oldfunction()
你不必从HintView扩展你的观点。它仅用于PhpStorm的自动完成


(请注意,您可以通过创建代码的快捷方式来加快速度。例如goto Settins/IDE Settings/。添加新模板。例如“
$this->MyElegant->
”的“MyLeg”,因此当您编写“MyLeg”并按Tab键时,它将自动写入类名)

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

对我来说,我的自定义帮助程序称为StatusHelper,因此需要@属性,如下所示:

App::uses('Helper', 'View');
/**
 * @property StatusHelper $Status
 * */
class StatusHelper extends AppHelper {
然后在view.ctp文件中,我只需要在顶部显示以下内容:

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

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


使用滤饼2.5-pHPForm 10。希望这对其他人有所帮助。

很简单,在CakePHP 3.x到PHPStrom中测试,支持命名空间

文件views.ctp类型PHPDoc的加载项

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


我认为这与蛋糕无关。检查PHPstorm设置/文档,它可能没有激活.ctp文件上的自动完成功能?已编辑的问题。是否检查了PHPstorm中的路径?它可能没有检查自定义助手所在的路径。我相信OP已经有了答案:。如果是--我建议制定解决方案/体验并将其作为答案发布,这样对其他人会有用。正如我在问题中指出的,我尝试了这个
*@var$this视图
,但它只自动完成核心帮助程序。
/***@var$this视图| StatusHelper*/
语法正确吗?[这是用于蛋糕2.x]管道`|`将两个类映射到.CTP中的
$this
变量;然后PhpStorm将在标准视图方法
$this->Html->{method}
和您的自定义助手方法
$this->Status->{method}
上帮助自动完成-我不确定PHPDoc语法的正确性,但PhpStorm喜欢它,并给我自动完成,我每天都使用它!你能帮我更正一下吗?哦,对不起,我没有理解你的意图,我试过逐字逐句的语法。您有一个额外的星号(
*@var
),如果删除它,您将获得
$this->Status
的代码智能。另外,由于我们只需要一个类型提示指示符,而不是一个合适的docblock,所以我们也可以使用
/**/而不是
/***/(这适用于这里的所有答案)。对,明白了!我将编辑我的答案,这样就不会有人因为
*
-谢谢,我已经将假星号编辑掉了(
/***@var
/***@var
)。这两种语法(
/***/
/***/
)都可以工作,只是它们略有不同(如果您实际使用phpDocumentor来呈现文档,则第二种语法将被忽略)。尽管它很难看,但总比编辑
/lib/Cake/View/View.php
要好。还值得注意的是,当您扩展内置帮助程序并使用
className
屏蔽它们时,它也很有用。
<?php /** @var $this Cake\View\View  */  ?>