侯体宗的博客
  • 首页
  • Hyperf版
  • beego仿版
  • 人生(杂谈)
  • 技术
  • 关于我
  • 更多分类
    • 文件下载
    • 文字修仙
    • 中国象棋ai
    • 群聊
    • 九宫格抽奖
    • 拼图
    • 消消乐
    • 相册

使用Laravel Filament快速搭建优雅美观的后台面板流程步骤

Laravel  /  管理员 发布于 1年前   550

Filament后台面板是快速创建精美的TALL技术栈的工具箱,可以创建页面、控制面板、模块、图表、插件等,
下面看看如何使用Filament搭建一个CRUD后台面板。

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


1. 安装要求

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


2. 安装和登录

在命令行输入:

composer require filament/filament

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

https://your-url/admin
或
http://your-url/admin

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

php artisan make:filament-user

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

Name:
> admin
Email address:
> [email protected]
Password:
>
Successful! [email protected] may now log in at http://laravel-filament.cn/admin/login.

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


3. 模型

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

php artisan make:model Project -m

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

  public function up()

  {
      Schema::create('projects', function (Blueprint $table) {
          $table->id();
          $table->string('name');
          $table->text('description');
          $table->date('start_date');
          $table->date('deadline');
          $table->foreignId('user_id');
          $table->timestamps();
      });
  }


执行迁移:

php artisan migrate

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

 protected $fillable = [

    'name',
    'description',
    'start_date',
    'deadline',
    'user_id'
];
public function user()
{
    return $this->belongsTo(User::class);
}


4. 项目资源

Filament 中的资源 (Resource) 用于管理表格、表单、视图等。

它就像是某种控制器,配置了我们所需要的,用于模型和 CRUD 的资源。使用以下命令创建资源:

php artisan make:filament-resource Project

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


+-- ProjectResource.php
+-- ProjectResource
|   +-- Pages
|   |   +-- CreateProject.php
|   |   +-- EditProject.php
|   |   +-- ListProjects.php

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


5. 定义表格

打开 app/Filament/Resources/ProjectResource.php 文件,

你会看到有一个静态的 table() 方法,里面包含了 columns() 和 filters()。

紧接着我们就可以像这样定义表格 (数据库字段):

  public static function table(Table $table): Table
  {
      return $table
            ->columns([
                Tables\Columns\TextColumn::make('name')->sortable()->searchable(),
                Tables\Columns\TextColumn::make('description'),
                Tables\Columns\TextColumn::make('start_date'),
                Tables\Columns\TextColumn::make('deadline'),
                Tables\Columns\TextColumn::make('user.name'),
            ])
            ->filters([]);
    }

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


6. 创建项目表单

在 app/Filament/Resources/ProjectResource.php 文件里,我们可以在静态 form 方法中

,以这样的方式创建表单控件:


   public static function form(Form $form): Form
   {
        return $form
            ->schema([
                Forms\Components\TextInput::make('name')->required(),
                Textarea::make('description'),
                DatePicker::make('start_date')->format('Y-m-d')->displayFormat('m/d/Y'),
                DatePicker::make('deadline')->format('Y-m-d')->displayFormat('m/d/Y'),
                BelongsToSelect::make('user_id')->relationship('user', 'name')
            ]);
    }


别忘了引入 Textarea, DatePicker, BelongsToSelect。

当使用日期时,format() 函数会将对应的格式化日期存入数据库中。

在 BelongsToSelect 中,我们需要在 *make * 中输入外键,关联接收两个参数:

第一个是关联名称,第二个是你要显示的字段名。

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


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

就是这么简单!只需几分钟,我们就创建了一个后台面板,同时也完成了一个 CRUD 模块。

如果你需要了解更多 Filament 的情况,可以查看 Filament 中文文档。

https://laravel-filament.cn/

  • 上一条:
    如何使用Laravel删除字符串中的所有多余空格
    下一条:
    windows 11激活_Win11 KMS激活流程步骤
  • 昵称:

    邮箱:

    0条评论 (评论内容有缓存机制,请悉知!)
    最新最热
    • 分类目录
    • 人生(杂谈)
    • 技术
    • linux
    • Java
    • php
    • 框架(架构)
    • 前端
    • ThinkPHP
    • 数据库
    • 微信(小程序)
    • Laravel
    • Redis
    • Docker
    • Go
    • swoole
    • Windows
    • Python
    • 苹果(mac/ios)
    • 相关文章
    • Laravel 11.15版本发布 - Eloquent Builder中添加的泛型(0个评论)
    • Laravel 11.14版本发布 - 新的字符串助手和ServeCommand改进(0个评论)
    • Laravel 11.12版本发布 - Artisan的`make`命令自动剪切`.php `扩展(0个评论)
    • Laravel的轻量型购物车扩展包:binafy/laravel-cart(0个评论)
    • Laravel 11.11版本发布 - 查看模型中的第三方关系:show(0个评论)
    • 近期文章
    • 在go+gin中使用"github.com/skip2/go-qrcode"实现url转二维码功能(0个评论)
    • 在go语言中使用api.geonames.org接口实现根据国际邮政编码获取地址信息功能(1个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf分页文件功能(0个评论)
    • gmail发邮件报错:534 5.7.9 Application-specific password required...解决方案(0个评论)
    • 欧盟关于强迫劳动的规定的官方举报渠道及官方举报网站(0个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf文件功能(0个评论)
    • Laravel从Accel获得5700万美元A轮融资(0个评论)
    • 在go + gin中gorm实现指定搜索/区间搜索分页列表功能接口实例(0个评论)
    • 在go语言中实现IP/CIDR的ip和netmask互转及IP段形式互转及ip是否存在IP/CIDR(0个评论)
    • PHP 8.4 Alpha 1现已发布!(0个评论)
    • 近期评论
    • 122 在

      学历:一种延缓就业设计,生活需求下的权衡之选中评论 工作几年后,报名考研了,到现在还没认真学习备考,迷茫中。作为一名北漂互联网打工人..
    • 123 在

      Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..
    • 原梓番博客 在

      在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..
    • 博主 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..
    • 1111 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..
    • 2016-10
    • 2016-11
    • 2017-07
    • 2017-08
    • 2020-03
    • 2020-04
    • 2020-05
    • 2020-06
    • 2020-07
    • 2020-08
    • 2020-09
    • 2020-10
    • 2020-11
    • 2021-01
    • 2021-02
    • 2021-03
    • 2021-04
    • 2021-05
    • 2021-06
    • 2021-07
    • 2021-08
    • 2021-09
    • 2021-10
    • 2021-11
    • 2021-12
    • 2022-01
    • 2022-02
    • 2022-03
    • 2022-04
    • 2022-05
    • 2022-06
    • 2022-07
    • 2022-08
    • 2022-09
    • 2022-10
    • 2022-11
    • 2022-12
    • 2023-01
    • 2023-02
    • 2023-03
    • 2023-04
    • 2023-05
    • 2023-06
    • 2023-07
    • 2023-08
    • 2023-09
    • 2023-10
    • 2023-11
    • 2023-12
    • 2024-01
    • 2024-02
    • 2024-03
    • 2024-04
    • 2024-05
    • 2024-06
    • 2024-07
    Top

    Copyright·© 2019 侯体宗版权所有· 粤ICP备20027696号 PHP交流群

    侯体宗的博客