PHPStorm autocompletar twig vars

2 minutos de lectura

avatar de usuario
Felice Ostuni

Estoy usando PHPStorm 8.1 como IDE en un proyecto php (proyecto laravel 4.1 con ramita en el lado de la vista)

Será genial tener una sugerencia de autocompletar en vars en el “lado de la ramita” como se puede ver aquí en este complemento de phpstorm para Symfony2:
http://symfony2-plugin.espend.de/languages/twig/index.html#phptypes

Básicamente, en mi vista de ramita, declaro el “tipo” de var usando un comentario, luego vería sugerencias en mi modelo (farmaco):

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

Nota: no estoy usando Symfony, sin embargo, tengo instalado el complemento de Symfony, pero el autocompletado no funciona para mí en archivos twig para mi proyecto laravel.

  • ¿Las plantillas twig tienen un html o twig ¿extensión?

    – Potherca

    22 de junio de 2015 a las 11:08

  • ambas cosas: template.html.twigsin embargo, el problema puede ser el espacio de nombres, en L4 no es explícito dentro de las clases, sino que lo maneja composer/autoload classmap.

    – Felice Ostuni

    22 de junio de 2015 a las 14:51


  • Me estoy encontrando con problemas similares. Estoy buscando para ver si puedo hacer que las cosas funcionen para un proyecto que no usa Symfony…

    – Potherca

    23 de junio de 2015 a las 8:07

Parece que te falta el @var anotación. La forma correcta sería:

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

Conseguí que esto funcionara para un proyecto que no es de Symfony sin problemas. Asegúrese de verificar que el complemento de Symfony esté realmente habilitado para el proyecto (no lo está de manera predeterminada) y reinicie el IDE después de habilitarlo.

También asegúrese de que la sugerencia de tipo apunte al nombre de clase completamente calificado.


Como nota al margen, tengo no (todavía) consiguió que esto funcione para las propiedades, es decir foo.bar.* cuando se accede a la propiedad a través de la magia (usando __get). Para esos casos, la propiedad debe colocarse en una variable propia:

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

  • gracias, finalmente var y el complemento de symfony hacen que el autocompletado funcione. Acerca de las propiedades, funcionan en mi caso porque uso en mis modelos anotaciones generadas, es decir: @property string $ enlace permanente, se construyen automáticamente por github.com/barryvdh/laravel-ide-helper

    – Felice Ostuni

    5 de agosto de 2015 a las 14:04

  • Funciona para Silex 2 también. ¡Gracias!

    – xarlymg89

    7 febrero 2018 a las 14:44

  • Funciona con referencias de métodos en asociación profunda también ahora, para quien esto pueda interesar;)

    – Klesun

    8 sep 2020 a las 23:17


¿Ha sido útil esta solución?