PHPStorm自动完成Twig变量

38

我正在一个 PHP 项目中使用 PHPStorm 8.1 作为 IDE ( Laravel 4.1 项目,视图部分使用 twig )。

如果能在“twig 部分”像这个 Symfony2 PHPStorm 插件一样有变量的自动完成提示就太好了:
http://symfony2-plugin.espend.de/languages/twig/index.html#phptypes

基本上,在我的 twig 视图中,我使用注释声明变量“type”,然后我会在我的模型(farmaco)中看到提示:

   {# farmaco \Farmaco #}
   {% farmaco.  %} <-- I would see hints -->

注意:我没有使用Symfony,但我已经安装了Symfony插件,但自动完成在我的Laravel项目的Twig文件中不能正常工作。


Twig模板文件的扩展名是html还是twig - Potherca
无论是 template.html.twig,问题可能在于命名空间,在 L4 中它不是显式存在于类中,而是由 composer / autoload classmap 处理。 - Felice Ostuni
1
我遇到了类似的问题。我正在尝试使一个不使用Symfony的项目正常工作... - Potherca
1个回答

64

您似乎缺少@var注释。 正确的形式应该是:

{# @var foo \FooService #}
{{ foo. }} <!-- press CTRL+SPACE for typehints -->

我在一个非Symfony项目中使用了这个方法而没有遇到问题。请确保检查该项目是否实际启用了Symfony插件(默认情况下未启用),并在启用后重新启动IDE。

此外,确保类型提示指向完全限定类名


顺便提一下,我尚未将此方法用于属性,即当通过魔术方法(使用__get)访问属性时的foo.bar.*。对于这些情况,需要将属性放入其自己的变量中:

{# @var foo \FooService #}
{{ foo.bar. }} <!-- no typehints for bar :-( -->
{% set bar = foo.bar %}
{# @var bar \BarService #}
{{ bar.  }} <!-- press CTRL+SPACE for typehints :-) -->

2
谢谢,最终使用 var 和 Symfony 插件让自动完成正常工作。关于属性,在我的情况下它们有效,因为我在我的模型中使用了生成的注释,例如:@property string $permalink它们是由 https://github.com/barryvdh/laravel-ide-helper 自动构建的。 - Felice Ostuni
1
同样适用于Silex 2。谢谢! - xarlymg89
3
现在在_deep-assoc_中也可以使用“方法引用”,对于可能感兴趣的人来说这是件好事情 ;) - Klesun

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接