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

laravel-admin分享我的一个线上项目中的控制器及模型代码

Laravel  /  管理员 发布于 3年前   1167

laravel-admin分享我的一个线上项目中的控制器及模型代码

控制器:

<?php
namespace App\Admin\Controllers;

use App\Models\ProductCreditCard;
use App\Models\SelectOption;
use Encore\Admin\Controllers\HasResourceActions;
use Encore\Admin\Form;
use Encore\Admin\Grid;
use Encore\Admin\Layout\Content;
use App\Http\Controllers\Controller;
use App\Models\CompanyCreditCard;

class ProductCreditCardController extends Controller
{
    use HasResourceActions;
    private $title = '产品表';
    private $states = [
        'on'  => ['value' => 0, 'text' => '否', 'color' => 'danger'],
        'off' => ['value' => 1, 'text' => '是', 'color' => 'success'],
    ];
    private $displays = [
        'on'  => ['value' => 1, 'text' => '否', 'color' => 'danger'],
        'off' => ['value' => 0, 'text' => '是', 'color' => 'success'],
    ];
    /**
     * Index interface.
     * @return Content
     */    
     public function index(Content $content)
    {
      return $content
          ->header($this->title)->description('列表')->body($this->grid());
    }

    /**
     * Edit interface.
     * @param $id
     * @return Content
     */
    public function edit($id, Content $content)
    {
      return $content
          ->header($this->title)->description('编辑')->body($this->form()->edit($id));
    }

    /**
     * Create interface.
     * @return Content
     */
    public function create(Content $content)
    {
      return $content
          ->header($this->title)->description('新建')->body($this->form());
    }

    /**
     * Make a grid builder.
     * @return Grid
     */
    protected function grid()
    {
        $grid = new Grid(new ProductCreditCard());

        $grid->id('cardID')->sortable();
        $grid->companycreditcards()->name('公司简称');
        $grid->Name('产品名称')->display(function ($name) {
            $url = '//www.xxx.com'.$this->generate_url;
            return "$name";
        });
        $grid->Image('图像')->image('',100,40);
        $grid->column('Apply','可申请')->switch($this->states);
        $grid->ApplyCount('申请量');
        $grid->recommends('推荐位')->pluck('title')->map(function ($title) {
            return "$title";
        })->implode('
');
        $grid->column('status','发行状态')->switch($this->states);
        $grid->column('Displays','显示状态')->switch($this->displays);
        $grid->filter(function($filter){
            // 去掉默认的id过滤器
            $filter->disableIdFilter();
            $filter->equal('id','cardID');
            $filter->equal('CompanyID','公司简称')->select(SelectOption::companycreditcards());
            $filter->where(function ($query) {
                if ($this->input == 'yes') {
                    $query->whereIn('id',SelectOption::recommendgablesType('App\\Models\\ProductCreditCard'));
                }
            }, '推荐位筛选', 'recommends')->select([
                'no'  => '无',
                'yes' => '推荐位筛选',
            ]);
        });
        $grid->paginate(30);
        return $grid;
    }

    /**
     * Make a form builder.
     * @return Form
     */
    protected function form()
    {
        $form = new Form(new ProductCreditCard());

        $form->tab('基本设置', function (Form $form) {
            $form->display('id', 'cardID');
            $form->select('CompanyID','公司简称')->options(SelectOption::companycreditcards());
            $form->text('Name','产品名称')->placeholder(' ');
            $form->select('Currency','币种')->options(SelectOption::sysparamsCardCurrency());
            $form->image('Image','卡片图片')->uniqueName();
            $form->UEditor('Introduction','M卡片介绍');
            $form->list('Featurelist','卡片特点')->max(5);
            $form->textarea('Feature','卡片特点');
            $form->listbox('recommends', '推荐位')->options(SelectOption::recommendOp())->settings(['selectorMinimalHeight' => 100]);
            $form->number('ViewCount','浏览次数');
            $form->switch('status','发行状态')->states($this->states);
            //重复的标签已删除 
        })->tab('卡服务收费', function (Form $form) {
            //有点多删了
        })->tab('URL模板设置', function (Form $form) {
            $form->hasMany('publicfield', 'URL设置', function (Form\NestedForm $form1)  {
                $form1->select('url_id', 'url规则')->options(SelectOption::urlOptions());
                $form1->text('url_parameter', 'url参数');
                $form1->text('url_key', 'url关键字');
                $form1->select('pc_template_id', 'PC模板')->options(SelectOption::templateOptions());
                $form1->text('pc_template_name', 'PC页面文件名');
                $form1->select('m_template_id', 'M模板')->options(SelectOption::templateOptions());
                $form1->text('m_template_name', 'M页面文件名');
            });
        });

//右上角功能按钮
$form->tools(function (Form\Tools $tools) {
$tools->disableDelete();
$tools->disableView();
});
// 在表单提交前调用
$form->submitted(function (Form $form) {//
});

//保存前回调
$form->saving(function (Form $form) {//
});
        //保存后回调
        $form->saved(function (Form $form) {
            $orm = ProductCreditCard::find($form->model()->id);
            $url = CompanyCreditCard::where('id',$form->model()->CompanyID)->value('staticname');
            $url = '/card/cardinfo/'.$url.'_'.$form->model()->id.'.shtml';
            $orm->generate_url = $url;
            $orm->save();
        });
        return $form;
    }
}

模型:

<?php
namespace App\Models;

use Encore\Admin\Form;
use Encore\Admin\Grid;
use Illuminate\Database\Eloquent\Model;
use Encore\Admin\Traits\AdminBuilder;
use Wanglelecc\Laracms\Models\Traits\WithCommonHelper;

class ProductCreditCard extends Model
{
    use AdminBuilder;
    use WithCommonHelper;
    protected $table = 'xxx';

    /**
     * 应该被转化为原生类型的属性
     * @var array
     */
    protected $casts = [
        'Theme' => 'array','Privileges' => 'array',
        'Habit' => 'array','Crowd' => 'array','Featurelist' => 'json',
        'pcCityes' => 'json','mCityes' => 'json',
    ];

    public static function grid($callback)
    {
        return new Grid(new static, $callback);
    }

    public static function form($callback)
    {
        return new Form(new static, $callback);
    }

    public function companycreditcards()
    {
        return $this->belongsTo(CompanyCreditCard::class,'CompanyID','id');
    }
    
    public function recommends()
    {
        return $this->morphToMany('App\Models\Recommend', 'rowtable', '19_cbb_recommendgables');
    }
}

  • 上一条:
    php 运行原理,目前常见的4种PHP运行模式
    下一条:
    lnmp环境+laravel框架+redis+多服务器负载均衡实现session共享案例
  • 昵称:

    邮箱:

    0条评论 (评论内容有缓存机制,请悉知!)
    最新最热
    • 分类目录
    • 人生(杂谈)
    • 技术
    • linux
    • Java
    • php
    • 框架(架构)
    • 前端
    • ThinkPHP
    • 数据库
    • 微信(小程序)
    • Laravel
    • Redis
    • Docker
    • Go
    • swoole
    • Windows
    • Python
    • 苹果(mac/ios)
    • 相关文章
    • Laravel 11版本抢先看,看将有什么新功能发布(0个评论)
    • Laravel框架中适用于Eloquent的日期过滤软件包:lara-date-filter(0个评论)
    • Laravel 10.24版本发布(0个评论)
    • Laravel应用程序性能监控 (APM) 工具:Scout (0个评论)
    • laravel框架中以公共函数方式实现job异步化执行封装代码示例(0个评论)
    • 近期文章
    • Laravel 11版本抢先看,看将有什么新功能发布(0个评论)
    • goose数据库迁移工具介绍及使用流程步骤(0个评论)
    • 中国程序员“翻墙”为海外软件公司打工,105.8万工资被罚没!转知乎(0个评论)
    • 在go语言gin框架中使用Sharding(Gorm分表中间件)实现分表流程步骤(0个评论)
    • 在PHP提高性能方式之开启OPCache扩展及OPCache配置参数详解(0个评论)
    • 在js的websocket客户端开发中遇到代码割裂情况解决方案(0个评论)
    • Laravel框架中适用于Eloquent的日期过滤软件包:lara-date-filter(0个评论)
    • Laravel 10.24版本发布(0个评论)
    • go语言多项目批量更新依赖及自动调用jenkins构建流程步骤(0个评论)
    • 在go语言中实现数学pow(x^y 的幂次)代码示例(0个评论)
    • 近期评论
    • 路人 在

      php中使用hyperf框架调用讯飞星火大模型实现国内版chatgpt功能示例中评论 教程很详细,如果加个前端chatgpt对话页面就完美了..
    • 博主 在

      科学上网翻墙之v2rayN-Core客户端免费公益节点使用教程中评论 @ mashrdn 多切换几个节点测试,免费ssr是没那么稳..
    • mashrdn 在

      科学上网翻墙之v2rayN-Core客户端免费公益节点使用教程中评论 V2rayn免费节点添加上去了,youtobe无法打开网页,是怎么回事..
    • 张伟 在

      科学上网翻墙之v2rayN-Core客户端免费公益节点使用教程中评论 3q!有用,不过免费节点隔天就要去git上复制新的导进去..
    • 博主 在

      科学上网翻墙访问Google , 上外网神器佛跳墙VPN(永久免费)使用流程步骤中评论 该篇教程已不能用了,告知大家,免的老有老铁问我!..
    • 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
    Top

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

    侯体宗的博客