如何让 PhpStorm 知道 Blade 模板中第一次出现的变量已定义并且来自 View Composer?

问题描述 投票:0回答:1

我有一个

sidebar.blade.php
,我在其中显示从数据库中提取的各种内容。

@php
    $syncLogsCountPending = $sidebarCounters['sync_logs']['pending'];
    $syncLogsCountCompleted = $sidebarCounters['sync_logs']['completed'];
@endphp

<nav id="sidebar" class="col-md-3 col-lg-2">
   cut
</nav>

我的 IDE 以红色突出显示 $sidebarCounters,因为它认为该变量未定义。

enter image description here

我有点理解这种行为,因为这是该变量在模板中第一次出现,但显然该变量确实存在,但来自:

<?php

namespace App\Http\Composers\Backend;

use App\Repositories\Sync\SyncLogRepository;
use Illuminate\View\View;

class SidebarComposer
{
    public function __construct(
        private readonly SyncLogRepository $syncLogRepository
    ) {}

    public function compose(View $view): void
    {
        $view->with('sidebarCounters', $this->getSidebarCounters()); // <---- 👋
    }

    private function getSidebarCounters(): array
    {
        return [
            'sync_logs' => [
                'pending' => 0,
                'completed' => $this->syncLogRepository->getFinishedCount(),
            ],
        ];
    }
}

如何让 IDE 变得更智能?我可以在

@php
@endphp
标签中添加任何注释吗?

php laravel ide phpstorm
1个回答
0
投票

您可以使用docblock来实现您想要的:

@php
    /** @var array $sidebarCounters */

    $syncLogsCountPending = $sidebarCounters['sync_logs']['pending'];
    $syncLogsCountCompleted = $sidebarCounters['sync_logs']['completed'];
@endphp

<nav id="sidebar" class="col-md-3 col-lg-2">
   cut
</nav>
© www.soinside.com 2019 - 2024. All rights reserved.