98 lines
2.8 KiB
PHP
98 lines
2.8 KiB
PHP
<?php
|
|
|
|
namespace App\Admin\Controllers;
|
|
|
|
use App\Admin\Repositories\UserTalk;
|
|
use Dcat\Admin\Form;
|
|
use Dcat\Admin\Grid;
|
|
use Dcat\Admin\Show;
|
|
use Dcat\Admin\Widgets\Card;
|
|
use Dcat\Admin\Http\Controllers\AdminController;
|
|
|
|
class UserTalkController extends AdminController
|
|
{
|
|
/**
|
|
* Make a grid builder.
|
|
*
|
|
* @return Grid
|
|
*/
|
|
protected function grid()
|
|
{
|
|
return Grid::make(UserTalk::with('user'), function (Grid $grid) {
|
|
$grid->column('id')->sortable();
|
|
$grid->column('user.nick_name', '昵称');
|
|
$grid->column('talk_content')
|
|
->if(function($column){
|
|
return mb_strlen($this->talk_content)>=30 ? 1:0;
|
|
})->then(function (Grid\Column $column) {
|
|
$column->display(function(){
|
|
return mb_substr($this->talk_content, 0, 30);
|
|
})->expand(function () {
|
|
// 返回显示的详情
|
|
// 这里返回 content 字段内容,并用 Card 包裹起来
|
|
$card = new Card(null, $this->talk_content);
|
|
|
|
return "<div style='padding:5px 5px 0'>$card</div>";
|
|
});
|
|
})->else(function (Grid\Column $column) {
|
|
$column->display(function(){
|
|
return $this->talk_content;
|
|
});
|
|
});
|
|
|
|
$grid->column('praise_num')->sortable();
|
|
$grid->column('is_show')->switch();
|
|
$grid->column('created_at');
|
|
|
|
$grid->model()->orderBy('created_at', 'desc');
|
|
|
|
$grid->disableActions();
|
|
$grid->disableCreateButton();
|
|
$grid->filter(function (Grid\Filter $filter) {
|
|
$filter->like('talk_content');
|
|
$filter->equal('user_id', '留言人')->select(admin_route('user.api'));
|
|
|
|
});
|
|
});
|
|
}
|
|
|
|
/**
|
|
* Make a show builder.
|
|
*
|
|
* @param mixed $id
|
|
*
|
|
* @return Show
|
|
*/
|
|
protected function detail($id)
|
|
{
|
|
return Show::make($id, new UserTalk(), function (Show $show) {
|
|
$show->field('id');
|
|
$show->field('user_id');
|
|
$show->field('talk_content');
|
|
$show->field('praise_num');
|
|
$show->field('is_show');
|
|
$show->field('created_at');
|
|
$show->field('updated_at');
|
|
});
|
|
}
|
|
|
|
/**
|
|
* Make a form builder.
|
|
*
|
|
* @return Form
|
|
*/
|
|
protected function form()
|
|
{
|
|
return Form::make(new UserTalk(), function (Form $form) {
|
|
$form->display('id');
|
|
$form->text('user_id');
|
|
$form->text('talk_content');
|
|
$form->text('praise_num');
|
|
$form->text('is_show');
|
|
|
|
$form->display('created_at');
|
|
$form->display('updated_at');
|
|
});
|
|
}
|
|
}
|