| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164 | <?phpnamespace Tests\Controllers;use App\Http\Controllers\Controller;use Encore\Admin\Controllers\ModelForm;use Encore\Admin\Facades\Admin;use Encore\Admin\Form;use Encore\Admin\Grid;use Encore\Admin\Layout\Content;use Tests\Models\Tag;use Tests\Models\User;class UserController extends Controller{    use ModelForm;    /**     * Index interface.     *     * @return Content     */    public function index()    {        return Admin::content(function (Content $content) {            $content->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 "<img src='{$avatar}' />";            });            $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 "<code>{$tag['name']}</code>";                })->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('<a href="/" class="btn btn-xs btn-danger">detail</a>');                }            });        });    }    /**     * 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('<a html-field>html...</a>');        });    }}
 |