laravel-admin分享我的一个线上项目中的控制器及模型代码
Laravel  /  管理员 发布于 2年前   762
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');
}
}
博主 在
centos7中Meili Search搜索引擎安装流程步骤中评论 @鹿 执行以下命令看看你的2.27版本是否存在strin..鹿 在
centos7中Meili Search搜索引擎安装流程步骤中评论 这是我的错误提示,下载了对应的glibc-2.25.tar.gz后续按照教程操作..阿凡达123 在
golang 怎么做热更新中评论 也可以看看这个:https://github.com/edwingeng/hot..博主 在
hyperf框架常用命令-在centos7中退出命令及在docker容器中退出命令中评论 @路过的靓仔:cdn静态资源被墙,已修复..GGGGGGGGG 在
layui框架常用输入框介绍中评论 写的很好解决问题..
Copyright·© 2019 侯体宗版权所有·
粤ICP备20027696号