header('All users');
$content->description('description');
$content->body($this->grid());
});
}
/**
* Edit interface.
*
* @param $id
*
* @return Content
*/
public function edit($id)
{
return Admin::content(function (Content $content) use ($id) {
$content->header('Edit user');
$content->description('description');
$content->body($this->form()->edit($id));
});
}
/**
* Create interface.
*
* @return Content
*/
public function create()
{
return Admin::content(function (Content $content) {
$content->header('Create user');
$content->body($this->form());
});
}
/**
* Make a grid builder.
*
* @return Grid
*/
protected function grid()
{
return Admin::grid(User::class, function (Grid $grid) {
$grid->id('ID')->sortable();
$grid->username();
$grid->email();
$grid->mobile();
$grid->full_name();
$grid->avatar()->display(function ($avatar) {
return "
";
});
$grid->profile()->postcode('Post code');
$grid->profile()->address();
$grid->position('Position');
$grid->profile()->color();
$grid->profile()->start_at('开始时间');
$grid->profile()->end_at('结束时间');
$grid->column('column1_not_in_table')->display(function () {
return 'full name:'.$this->full_name;
});
$grid->column('column2_not_in_table')->display(function () {
return $this->email.'#'.$this->profile['color'];
});
$grid->tags()->display(function ($tags) {
$tags = collect($tags)->map(function ($tag) {
return "{$tag['name']}
";
})->toArray();
return implode('', $tags);
});
$grid->created_at();
$grid->updated_at();
$grid->filter(function ($filter) {
$filter->like('username');
$filter->like('email');
$filter->like('profile.postcode');
$filter->between('profile.start_at')->datetime();
$filter->between('profile.end_at')->datetime();
});
$grid->actions(function ($actions) {
if ($actions->getKey() % 2 == 0) {
$actions->append('detail');
}
});
});
}
/**
* Make a form builder.
*
* @return Form
*/
protected function form()
{
Form::extend('map', Form\Field\Map::class);
Form::extend('editor', Form\Field\Editor::class);
return Admin::form(User::class, function (Form $form) {
$form->disableDeletion();
$form->display('id', 'ID');
$form->text('username');
$form->email('email')->rules('required');
$form->mobile('mobile');
$form->image('avatar')->help('上传头像', 'fa-image');
$form->ignore(['password_confirmation']);
$form->password('password')->rules('confirmed');
$form->password('password_confirmation');
$form->divide();
$form->text('profile.first_name');
$form->text('profile.last_name');
$form->text('profile.postcode')->help('Please input your postcode');
$form->textarea('profile.address')->rows(15);
$form->map('profile.latitude', 'profile.longitude', 'Position');
$form->color('profile.color');
$form->datetime('profile.start_at');
$form->datetime('profile.end_at');
$form->multipleSelect('tags', 'Tags')->options(Tag::all()->pluck('name', 'id')); //->rules('max:10|min:3');
$form->display('created_at', 'Created At');
$form->display('updated_at', 'Updated At');
$form->html('html...');
});
}
}