VS Code extension that brings language intelligence to Laravel Blade templates (.blade.php).
All standard VS Code language features enabled for Blade files
- Go to Definition — jump to class/method/function definitions from Blade
- Find References — locate all references to a symbol across the project
- Hover — type signatures and docblocks on hover
- Document Symbols — outline and breadcrumb navigation for PHP symbols
- Reference CodeLens — see reference counts above classes, functions, methods, properties, enums
- Reference Rename — update reference on rename
- intelephense (
bmewburn.vscode-intelephense-client) - PHP 8.x with the
phpbinary available (or configured viabladeParser.phpCommand)
Docker if you are going to use docker make sure to include
-iin your command, ex.docker exec -i <app-image-name> php
-
If you use TypeLens, exclude the Blade language to avoid duplicate codelens:
-
ext will set
intelephense.codeLens.references.enabletofalseto avoid duplicate code lens in php as we override it to show references in blade files aswell.
1 : use @var comment
@foreach ($users as $user)
{{-- @var \App\Models\User $user --}}
@if ($user->isActive)
// ..
@endif
@endforeach2 : use assertion
-
add global function
use Webmozart\Assert\Assert; if (! \function_exists('_is')) { /** * @template T of object * * @param class-string<T> $type * * @return T */ function _is(object $obj, string $type): object { return Assert::isInstanceOf($obj, $type); } }
-
now use it like so
@foreach ($users as $user) @if (_is($user, \App\Models\User::class)->isActive) // .. @endif @endforeach
why u might use both ?
so you dont have to rewrite
@php
// from
$serverErrors = collect($errors->getBags())
->flatMap(fn($bag) => $bag->messages())
->toArray();
// to
$serverErrors = collect($errors->getBags())
->flatMap(function($bag) {
/** @var \Illuminate\Support\MessageBag $bag */
return $bag->messages();
})
->toArray();
// instead
$serverErrors = collect($errors->getBags())
->flatMap(fn($bag) => _is($bag, \Illuminate\Support\MessageBag::class)->messages())
->toArray();
@endphpuse @see the same way you use it in php files to jump a class/method
{{-- @see \App\Models\User::isVerified() --}}
// or
{{-- @see \App\View\Composers\UserComposer::compose() --}}