## Filament 从管理面板顶级容器开始
## 环境要求
运行 Filament 有一些基础要求:
* PHP 8.1+
* Laravel v10.0+
* Livewire v3.0+
## 安装
> 如果你是从 Filament v2 升级,请查看[升级向导](https://laravel-filament.cn/docs/zh-CN/3.x/panels/upgrade-guide)。
安装 Filament 面板构造器,在 Laravl 项目目录下运行如下命令:
~~~bash
composer require filament/filament:"^3.2" -W php artisan filament:install --panels
~~~
这段命令将会创建并注册一个新的[Laravel 服务提供者](https://laravel.com/docs/providers),叫做`app\Providers\Filament\AdminPanelProvider`.
> 如果访问面板时出错,请检查该服务提供者有没有在`bootstrap/providers.php`(Laravel 11 及以上版本)或`config/app.php`(Laravel 10 及以下版本) 中注册。如果没有,你应该手动添加。
## 创建用户
如果还没有用户,你可以使用以下命令创建新用户:
~~~bash
php artisan make:filament-user
~~~
访问`/admin`并登录,你现在可以开始创建自己的应用了!
不确定应该从哪里开始?请浏览[开始向导](https://laravel-filament.cn/docs/zh-CN/3.x/panels/getting-started),学习如何构建一个完整登录的 Filament 管理后台。
## 使用其他 Filament 包
Filament 面板构造器包已经预装了[表单构造器](https://laravel-filament.cn/docs/zh-CN/3.x/forms/installation)、[表格构造器](https://laravel-filament.cn/docs/zh-CN/3.x/tables/installation)、[通知生成器](https://laravel-filament.cn/docs/zh-CN/3.x/notifications/installation)、[Action](https://laravel-filament.cn/docs/zh-CN/3.x/actions/installation)、[信息列表](https://laravel-filament.cn/docs/zh-CN/3.x/infolists/installation)及[Widget](https://laravel-filament.cn/docs/zh-CN/3.x/widgets/installation)包。因此在面板中无需再行安装就能使用。
## 改善 Filament 面板性能
### 缓存 Blade 图标
你可以考虑在本地及部署脚本中运行`php artisan icons:cache`。这是因为 Filament 使用了[Blade Icons](https://blade-ui-kit.com/blade-icons)包,它在缓存时有更好的性能。
### 缓存 Filament 组件
你也可以考虑在部署脚本中运行`php artisan filament:cache-components`,特别是当你有大量组件(资源、页面、Widgets、关联管理器、自定义 Livewire 组件等)时。这将在应用的`bootstrap/cache/filament`目录中生成缓存文件,其中包含每个组件类型的索引。这在某些应用中可以显著提升 Filament 的性能,因为它减少了需要扫描的文件数量并且自动发现组件。
不过,如果你在本地开发应用,应该避免使用该命令,因为它在清除或者重新缓存之前,将会阻止你发现新组件。
你可以运行`php artisan filament:clear-cached-components`在任何时候清理缓存而不重新生成缓存。
### 在服务器中启用 OPcache
来自于[Laravel Forge 文档](https://forge.laravel.com/docs/servers/php.html#opcache):
> 优化生产环境中的 PHP OPcache,将编译过的 PHP 代码保存在内存中是对性能的极大提升。
请使用搜索引擎去检索相关的 Opcache 安装指南。
### 优化 Laravel 应用
你也可以考虑在部署脚本中运行`php artisan optimize`。这将会缓存配置和路由。
## 部署到生产环境
### 允许用户访问面板
默认情况下,所有的`App\Models\User`在本地下都可以访问 Filament。要允许用户在生成环境中访问,你还需要采取一些额外的措施来确保只有授权的用户可以访问该应用。
~~~php
<?php namespace App\Models; use Filament\Models\Contracts\FilamentUser;use Filament\Panel;use Illuminate\Foundation\Auth\User as Authenticatable; class User extends Authenticatable implements FilamentUser{ // ... public function canAccessPanel(Panel $panel): bool { return str_ends_with($this->email, '@yourdomain.com') && $this->hasVerifiedEmail(); }}
~~~
> 如果你没有完成这些步骤,当你在生产环境中试图访问应用时,会出现 403 错误。
了解更多[用户](https://laravel-filament.cn/docs/zh-CN/3.x/panels/users)相关信息。
## 发布配置
你可以使用如下命令发布配置文件:
~~~bash
php artisan vendor:publish --tag=filament-config
~~~
## 发布翻译文件
可以使用如下命令可以发布语言文件供翻译:
~~~bash
php artisan vendor:publish --tag=filament-translations
~~~
由于此包依赖于其他 Filament 包,因此你还可以使用如下命令发布语言文件:
~~~bash
php artisan vendor:publish --tag=filament-actions-translationsphp artisan vendor:publish --tag=filament-forms-translationsphp artisan vendor:publish --tag=filament-notifications-translationsphp artisan vendor:publish --tag=filament-tables-translationsphp artisan vendor:publish --tag=filament-support-translations
~~~
## 升级
> 如果你是从 Filament v2 升级,请查看[升级向导](https://laravel-filament.cn/docs/zh-CN/3.x/panels/upgrade-guide)。
当运行`composer update`命令时,Filament 会自动升级到最新的非破坏性版本。升级完成后,应该清除所有 Laravel 缓存,并且重新发布前端资源。你可以使用`filament:upgrade`命令一次性完成这些动作,该命令会第一次运行`filament:install`添加到`composer.json`文件中:
~~~json
"post-autoload-dump": [ // ... "@php artisan filament:upgrade"],
~~~
请注意`filament:upgrade`不会真正处理升级过程,因为 Composer 已经做了升级,如果你不使用`post-autoload-dump`钩子手动升级,你可以自己运行该命令:
~~~bash
composer updatephp artisan filament:upgrade
~~~