PHP8.1.21版本已发布
vue8.1.21版本已发布
jquery8.1.21版本已发布

博客列表 > 使用 Laravel Filament 极速搭建美观大方的后台面板

使用 Laravel Filament 极速搭建美观大方的后台面板

IceCoder
IceCoder 原创
2022年06月16日 05:07:33 791浏览

Filament 后台面板是快速创建精美的TALL技术栈的工具箱。可以创建页面、控制面板、模块、图表、插件等。

在这个教程中,我们将使用 Filament 一起搭建一个 CRUD 后台面板。

注意:本文将假定你已经创建了一个新的 Laravel 项目,并且已经配置号了数据库

1. 安装要求

  • Laravel v8.0+
  • Livewire v2.0+
  • PHP v8.0+

2. 安装和登录

在命令行输入:

  1. composer require filament/filament

如果你想访问项目的登录页面,使用以下网址:

  1. https://your-url/admin
  2. http://your-url/admin

如果你还没创建用户,可以在命令行中使用如下命令创建:

  1. php artisan make:filament-user

然后,你就可以在如下终端输入相关用户信息:

  1. Name:
  2. > admin
  3. Email address:
  4. > admin@laravel-filament.cn
  5. Password:
  6. >
  7. Successful! admin@laravel-filament.cn may now log in at http://laravel-filament.cn/admin/login.

之后,我们就可以用这个用户名密码登录。

3. 模型

接下来,我们将使用如下命令创建新模型及对应的迁移文件:

  1. php artisan make:model Project -m

打开 database/migration 中的迁移文件,添加如下字段:

  1. public function up()
  2. {
  3. Schema::create('projects', function (Blueprint $table) {
  4. $table->id();
  5. $table->string('name');
  6. $table->text('description');
  7. $table->date('start_date');
  8. $table->date('deadline');
  9. $table->foreignId('user_id');
  10. $table->timestamps();
  11. });
  12. }

执行迁移:

  1. php artisan migrate

下一步便是打开 App\Models\Project.php 并添加 fillable 字段和关联:

  1. protected $fillable = [
  2. 'name',
  3. 'description',
  4. 'start_date',
  5. 'deadline',
  6. 'user_id'
  7. ];
  8. public function user()
  9. {
  10. return $this->belongsTo(User::class);
  11. }

4. 项目资源

Filament 中的资源(Resource) 用于管理表格、表单、视图等。它就像是某种控制器,配置了我们所需要的,用于模型和CRUD的资源。使用以下命令创建资源:

  1. php artisan make:filament-resource Project

这个命令会生成这么一些文件:

  1. +-- ProjectResource.php
  2. +-- ProjectResource
  3. | +-- Pages
  4. | | +-- CreateProject.php
  5. | | +-- EditProject.php
  6. | | +-- ListProjects.php

此时的后台面板中,你就能看到对应的菜单了。

5. 定义表格

打开 app/Filament/Resources/ProjectResource.php 文件,你会看到有一个静态的 table() 方法,里面包含了 columns()filters()。紧接着我们就可以像这样定义表格(数据库字段):

  1. public static function table(Table $table): Table
  2. {
  3. return $table
  4. ->columns([
  5. Tables\Columns\TextColumn::make('name')->sortable()->searchable(),
  6. Tables\Columns\TextColumn::make('description'),
  7. Tables\Columns\TextColumn::make('start_date'),
  8. Tables\Columns\TextColumn::make('deadline'),
  9. Tables\Columns\TextColumn::make('user.name'),
  10. ])
  11. ->filters([]);
  12. }

注意:只要使用像 user.name 这样的点语法就可以使用 belongsTo 关联。

6. 创建项目表单

app/Filament/Resources/ProjectResource.php 文件里,我们可以在静态 form 方法中,以这样的方式创建表单控件:

  1. public static function form(Form $form): Form
  2. {
  3. return $form
  4. ->schema([
  5. Forms\Components\TextInput::make('name')->required(),
  6. Textarea::make('description'),
  7. DatePicker::make('start_date')->format('Y-m-d')->displayFormat('m/d/Y'),
  8. DatePicker::make('deadline')->format('Y-m-d')->displayFormat('m/d/Y'),
  9. BelongsToSelect::make('user_id')->relationship('user', 'name')
  10. ]);
  11. }
  • 别忘了引入Textarea, DatePicker, BelongsToSelect
  • 当使用日期时,format() 函数会将对应的格式化日期存入数据库中。
  • BelongsToSelect 中,我们需要在 make 中输入外键,关联接收两个参数:第一个是关联名称,第二个是你要显示的字段名。

完成后,你就可以打开 create 页面,查看表单。

接下来,你就可以使用该表单添加一些数据,然后去查看相应表格展示页。

就是这么简单!只需几分钟,我们就创建了一个后台面板,同时也完成了一个CRUD模块。如果你需要了解更多 Filament 的情况,可以查看 Filament 中文文档

声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议