Features Releases

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:

<?php /** @var Application\Entity\User $user */ ?>

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.

laravel-blade-docblocks

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

image description