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

管理员 发布于 3年前   515

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');
    }
}

请勿发布不友善或者负能量的内容。与人为善,比聪明更重要!

该博客于2020-12-7日,后端基于go语言的beego框架开发
前端页面使用Bootstrap可视化布局系统自动生成

是我仿的原来我的TP5框架写的博客,比较粗糙,底下是入口
侯体宗的博客

      订阅博客周刊

文章标签

友情链接

HouTiZong
侯体宗的博客
© 2020 zongscan.com
版权所有ICP证 : 粤ICP备20027696号
PHP交流群
侯体宗的博客