laravel-admin常见增删改查的处理

本篇主要内容

后台最常见的功能就是增删改查功能,在使用laravel-admin过程中,有一些功能的特殊显示,需要我们频繁的去查阅文档
这里呢,我就总结一下自己遇到的一些常用的,各位看官复制粘贴即可


增/改

普通必填input框

在这里插入图片描述

$form->text('code', '品种代码')->rules('required');
下拉选项

在这里插入图片描述

$form->select('open_status', '允许/禁止开仓')->options(
    [PositionStatus::ALLOW => '允许开仓', PositionStatus::BAN => '禁止开仓']
);

上面的PositionStatus是自己创建枚举类 方便自己维护大概的写法如下

<?php

namespace App\Enum;

/**
 * 是否允许开仓
 * Class SwitchStatus
 * @package App\Enum
 */
class PositionStatus
{

    //允许
    const ALLOW = 1;
    //禁止
    const BAN = 2;
    //是否允许开仓
    const OPEN_PERMISSION = [
        self::ALLOW => '允许',
        self::BAN   => '禁止'
    ];
}
时间选项(数值只要时+分)

在这里插入图片描述

$form->time('constraint_time_two', '强平时间2')->format("HH:mm");
下拉选项(内容来自读表数据)

首先要创建那个表的模型层 ,调用的过程中 一个字段用来显示到客户端 另外一个字段就用来插入当前主表的关联字段
在这里插入图片描述

$form->select('exchange_id', '交易所')
->options(ExchangeModel::all()->pluck('name', 'exchange_id'));
开关类型
$states = [
    'on'  => [
        'value' => PositionStatus::ALLOW,
        'text'  => '是',
        'color' => 'primary'
    ],
    'off' => [
        'value' => PositionStatus::BAN,
        'text'  => '否',
        'color' => 'default'
    ],
];
$form->switch('open_permission', '允许开仓')->states($states);
密码类

下面的confirm会进行验证

$form->password('password', '账号密码')->rules("confirmed");
给输入框一个默认值

这里给的默认值 是当前主表的字段值

$form->password('password_confirmation', '确认密码')->default(
    function ($form) {
        return $form->model()->password;
    }
);
忽略提交过来的字段
$form->ignore(['password_confirmation']);
显示照片
$form->image('avatar', trans('admin.avatar'));
设置提交的路由
$form->setAction('auth/setting');
表单隐藏域
$form->hidden('risk_template_id', '风控模板Id')->value($riskTemplate->risk_template_id);

不再赘述
https://laravel-admin.org/docs/zh/model-grid-soft-deletes

也就是列表渲染数据

联表

这里的联合了variety 以及 variety模型关联的exchange

$grid->with(['variety','variety.exchange']);
where条件

Enable::DEL是枚举类

$grid->model()->where('contract.enable', '<>', Enable::DEL);
显示链式操作的数据
$grid->column('variety.exchange.name', '交易所')->display(
    function () {
        return $this->variety->exchange->name ?? "无";
    }
);
搜素
$grid->filter(
   function (Grid\Filter $filter) {
       $filter->disableIdFilter();
       $filter->like('name', '代理名称');
       $filter->like('code', '代理代码');
   }
);
格式化显示(时间,精确小数点,枚举类字段语义化)
$grid->column('create_at', '创建时间')->display(
    function ($time) {
        return date('Y-m-d H:i:s', $time);
    }
);


$grid->column('amount', '佣金金额')->totalRow()->display(
    function ($amount){
        return price_number('0.01',$amount);
    }
);

$grid->column('type', '来源')->display(
   function ($type) {
        return [
                UserEnum::SOURCE_ADMIN => "总管理",
                UserEnum::SOURCE_AGENT => "代理"
            ][$type] ?? '';
    }
);
显示不一样的样式
$grid->column('status', '状态')->display(
    function ($status) {
        if ($status == AgentStatus::NO_AUDIT) {
            return "<span class='label bg-yellow'>未审核</span>";
        } elseif ($status == AgentStatus::AUDIT_SUCCESS) {
            return "<span class='label bg-green'>审核成功</span>";
        } elseif ($status == AgentStatus::AUDIT_FAIL) {
            return "<span class='label bg-red'>审核失败</span>";
        } else {
            return '冻结';
        }
    }
);
算出某一列的合计
$grid->column('money', '当前账号金额')->display(
    function ($money) {
        return number_format($money, 2);
    }
)->totalRow();

基本上常用的都在这里了,如果没有想要的,才去查看文档也来得及!


觉得有用的点个赞加个关注吧!
有问题的欢迎在评论区留言!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章