You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel Filament 3自定义Dashboard页面无法传递视图参数问题

解决Filament 3自定义Dashboard向Blade视图传参问题

在Filament 3中,自定义Page类的静态view()方法不会被框架自动调用,所以无法通过这种方式传递数据。正确的做法是使用Filament内置的getViewData()方法来向视图传递变量。

修改Dashboard页面类代码

移除自定义的静态view()方法,替换为getViewData()方法:

<?php

namespace App\Filament\Pages;

use App\Filament\Widgets\StatsOverview;
use Filament\Pages\Page;
use Illuminate\Support\Facades\Log;

class Dashboard extends Page
{
    protected static ?string $navigationIcon = 'heroicon-o-home';

    protected static string $view = 'filament.pages.dashboard';

    protected function getHeaderWidgets(): array
    {
        return [
            StatsOverview::class,
        ];
    }

    // 框架会自动调用这个方法获取视图数据
    protected function getViewData(): array
    {
        $user = auth()->user();
        Log::info("Hello Earth"); // 修正原代码的Log方法名错误

        return [
            'user' => $user,
            // 可在此添加其他需要传递的数据,比如:
            // 'recentActivities' => Auth::user()->activities()->latest()->take(10)->get()
        ];
    }
}

Blade视图保持不变

你的原视图代码无需修改,现在$user变量已能正常访问:

<x-filament-panels::page>
    Hello {{ $user->name }}
</x-filament-panels::page>

补充说明

  • Filament的Page类通过内置的render()方法渲染视图,会自动读取$view属性指定的视图文件,并将getViewData()返回的数组作为变量传递给视图。
  • 如果是静态数据,也可以直接在Page类中定义公共属性,框架会自动将这些属性传递到视图中,例如:
    public string $pageTitle = '我的仪表盘';
    
    视图中直接使用{{ $pageTitle }}即可。

内容的提问来源于stack exchange,提问作者Rafat Rashid Rahi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 13:28:39