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();

基本上常用的都在這裏了,如果沒有想要的,纔去查看文檔也來得及!


覺得有用的點個贊加個關注吧!
有問題的歡迎在評論區留言!

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