laravel-admin分享我的一个线上项目中的控制器及模型代码
管理员 发布于 4年前   536
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框架写的博客,比较粗糙,底下是入口
侯体宗的博客
文章标签
友情链接