laravel-admin分享我的一个线上项目中的控制器及模型代码
Laravel  /  管理员 发布于 4年前   1461
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');
}
}
123 在
Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..原梓番博客 在
在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..博主 在
佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..1111 在
佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..路人 在
php中使用hyperf框架调用讯飞星火大模型实现国内版chatgpt功能示例中评论 教程很详细,如果加个前端chatgpt对话页面就完美了..Copyright·© 2019 侯体宗版权所有· 粤ICP备20027696号