QQ扫一扫联系
推荐使用如下的表结构
公共 article ( id, postTime, xxx ) 多语言 article_data ( id, articleId, lang, title, content, xxx )
目前5.x和9.x实现方式不同。可以参考一下。另外推荐放在 hookSaving 中通过代码判断。
https://laravel.com/docs/9.x/validation#rule-unique
Rule::unique('xxx')->where(fn ($query) => $query->where('leftStatus', 1))
https://laravel.com/docs/5.1/validation#rule-unique
unique:xxx,alias,NULL,id,leftStatus,1
可以参考这个
<?php namespace App\Admin\Controller; use App\Model\DemoNews; use App\Model\DemoNewsCategory; use Illuminate\Routing\Controller; use ModStart\Admin\Concern\HasAdminDetail; use ModStart\Admin\Concern\HasAdminForm; use ModStart\Admin\Concern\HasAdminGrid; use ModStart\Admin\Layout\AdminPage; use ModStart\Core\Input\InputPackage; use ModStart\Core\Input\Request; use ModStart\Grid\Grid; use ModStart\Grid\GridFilter; use ModStart\Support\Concern\HasPageTitleInfo; use ModStart\Widget\Box; class DemoNewsMultiGridController extends Controller { use HasPageTitleInfo; use HasAdminGrid; use HasAdminForm; use HasAdminDetail; public function index(AdminPage $page) { $grid1 = $this->grid1(); $grid2 = $this->grid2(); if (Request::isPost()) { switch (InputPackage::buildFromInput()->getTrimString('_grid')) { case 'grid1': return $grid1->request(); case 'grid2': return $grid2->request(); } } return $page ->pageTitle('新闻管理(多个)') ->append(Box::make($grid1, '新闻分类')) ->append(Box::make($grid2, '新闻管理')); } public function grid1() { $grid = Grid::make(DemoNewsCategory::class); $grid->id('id', 'ID'); $grid->text('title', '标题'); $grid->title('新闻分类'); $grid->urlGrid(modstart_admin_url('demo/news_multi_grid', ['_grid' => 'grid1'])); $grid->canAdd(false)->canEdit(false)->canDelete(false); $grid->gridFilter(function (GridFilter $filter) { $filter->eq('id', 'ID'); $filter->like('title', '标题'); }); return $grid; } public function grid2() { $grid = Grid::make(DemoNews::class); $grid->id('id', 'ID'); $grid->select('categoryId', '分类')->optionModelTree(DemoNewsCategory::class); $grid->text('title', '标题'); $grid->richHtml('content', '内容'); $grid->title('新闻管理'); $grid->urlGrid(modstart_admin_url('demo/news_multi_grid', ['_grid' => 'grid2'])); $grid->canAdd(false)->canEdit(false)->canDelete(false); $grid->gridFilter(function (GridFilter $filter) { $filter->eq('id', 'ID'); $filter->like('title', '标题'); }); return $grid; } }
系统默认使用 id
作为主键,如果需要使用自定义主键,可以通过数据模型类的方法来实现。
第一步,定义数据模型类
namespace Module\News\Model; use Illuminate\Database\Eloquent\Model; class News extends Model{ protected $table = 'news'; // 这里可以自定义主键 protected $primaryKey = 'nid'; }
第二步,使用数据模型类作为Form、Detail、Grid的操作对象
// 表单 $form = Form::make(News::class); // 详情 $detail = Detail::make(News::class); // 数据表格 $grid = Grid::make(News::class); // 快速CRUD $builder->init(News::class)
目前博客已经适配Member模块。
要实现功能可以安装Member模块后,在博客页面 module/Blog/View/pc/blog/show.blade.php 做一个简单判断。
@if( \Module\Member\Auth\MemberUser::id() ) <div>博客内容</div> @else <div>请先登录</div> @endif