Code Completion in Laravel Blade Templates

I’ve been using Laravel quite a lot lately. I’ve admitted in my personal blog posts that I was unfamiliar with Laravel and I’ve been using it in earnest to better understand the product and its community.

One of the things that annoyed me the most was the inability to get code completion on objects in a Blade view template. Coming from a Zend Framework background, I’m used to using vanilla PHP in the view layer, and consequently have always done this at the top of my template scripts:

This allows me to have code completion for the $user object in my view layer, which significantly enhances the point of passing around objects in the first place.

When working with Laravel’s Blade view layer, this approach didn’t work in PhpStorm previously as we didn’t treat .blade.php as regular PHP files (obviously, as they are different beasts). Contrary to the comments on the issue report this wasn’t a bug; if we treated Blade files the same as PHP, we’d have error and warning squiggles all over the place which would be equally as annoying.

The good news is that as of the latest EAP, PhpStorm now parses docblocks inside <?php tags in your Blade templates. That means that you can use the annotation I showed above to quickly and easily enable code completion on the objects in your templates.


The team are working hard internally to try and make these fixes that make your life easier on a daily basis, and I think they are doing a great job. Give it a go and let us know what you think.

— Gary and the PhpStorm Team

About Gary Hockin

Gary Hockin has been creating code to power web applications for 15 years, the last three of them at an extraordinary level. He is handsome, talented, funny and articulate, and also extremely modest. Gary is a valued contributor to Zend Framework 2 and is a member of the community review team. He's married and has two wonderful children, and when he's not coding, writing about code, speaking about code or reading about code, he can usually be found in the pub playing pool.
This entry was posted in Cool Feature, Newsletter. Bookmark the permalink.
  • michabbb

    SUPER !!!!!!!!!!!

  • knifey

    Will this support Blade’s @php tags? It looks just a little more ‘native’

    /** @var ApplicationEntityUser $user */

    • Maxim Kolmakov
    • Fery Wardiyanto

      For me it’s useless and I can’t see any point of it. Did you consider about it will actually be rendered by blade template when the app running, but it’s not doing anything but comment?

      Let say when I want PHPStorm to ‘do something’ for me, I only need to ‘ask’ PHPStorm to do the job, that’s it. I have no reason to ‘ask’ blade to make it ‘looks native’.

    • Oleg

      What about blade comment tags ? it is much more easier and better than using php tags:
      {{– @var ApplicationEntityUser $user –}}

  • Jonathan Garbee

    Is there any way to get this kind of support with twig templates?

    • Haehnchen

      fyi: Symfony Plugin provides this

      • Jonathan Garbee

        It claims support, however it isn’t working for me using twig inside of a Laravel project. If this kind of completion is supported for one template engine out-of-the-box then it should also work for other major template engines as well without plugins.

  • lucifurious

    Goodie! Can you make the squiggles go away in PHP env’d bash scripts 😉

  • Fery Wardiyanto

    I’m actually use this trick quite while now and it’s great to see someone post about it.

    Thank you.

  • Abigail Carson

    Can someone gives me the important detail of these templates. Great layout by the way.

  • Ozan Kurt

    So it took 1 year to do this… GJ!

  • yljphp


  • j_blotus

    this is cool – now i just need it for mustache templates rendered by php =]

  • Surbhipatel
  • Павел Иванов


  • amanda hyatt

    Wow!! This is something I ‘ve been searching for for a while.I’m thankful to you for writing this article.nuTemplates