AdminForm.php 3.9 KB
<?php
/**
+-----------------------------------------------------------------------------------------------------------------------
 * 管理端表单 trait层:渲染生成 管理员 form 表单
+-----------------------------------------------------------------------------------------------------------------------
 *
 * PHP version 7
 *
 * @category  App\Admin\Forms\User
 * @package   App\Admin\Forms\User
 * @author    Richer <yangzi1028@163.com>
 * @date      2021年11月3日14:06:25
 * @copyright 2020-2022 Richer (http://www.Richer.com/)
 * @license   http://www.Richer.com/ License
 * @link      http://www.Richer.com/
 */
namespace App\Admin\Forms\User;

use App\Admin\Rewrite\Admin;
use App\Models\Admin\Role;
use App\Models\Admin\UserRole;
use App\Models\Area\County;
use App\Models\Traits\AreaTrait;
use App\Models\User\User;
use Encore\Admin\Form;
use Illuminate\Support\Arr;
use Illuminate\Support\Facades\Hash;

/**
 * Class AdminForm.
 *
 * @category  App\Admin\Forms\User
 * @package   App\Admin\Forms\User
 * @author    Richer <yangzi1028@163.com>
 * @date      2021年11月3日14:06:25
 * @copyright 2020-2022 Richer (http://www.Richer.com/)
 * @license   http://www.Richer.com/ License
 * @link      http://www.Richer.com/
 */
trait AdminForm
{
    use AreaTrait;

    /**
     * 渲染表单字段
     *
     * @param Int $id 用户id
     *
     * @return void
    */
    public function renderFormFields($id)
    {
        $userTable = config('admin.database.users_table');
        $permissionModel = config('admin.database.permissions_model');
        $roleModel = config('admin.database.roles_model');

        $this->form->display('id', 'ID');
        $this->form->text('username', trans('admin.username'))
            ->creationRules(['required', "unique:admin_users"])
            ->updateRules(['required', "unique:admin_users,username,{{id}}"]);

        $this->form->text('name', trans('admin.name'))->rules('required');
        $this->form->image('avatar', trans('admin.avatar'));
        $this->form->password('password', trans('admin.password'))->rules('required|confirmed');
        $this->form->password('password_confirmation', trans('admin.password_confirmation'))->rules('required')
            ->default(function ($form) {
                return $form->model()->password;
            });

        $this->form->ignore(['password_confirmation']);
//        $this->formMultipleSelectField($this->form, 'roles', trans('admin.roles'), $roleModel::all()->pluck('name', 'id'), 1);

//        $this->form->radio('role_id', trans('admin.roles'))->options(Role::all()->pluck('name', 'id'))->required();
        $this->form->multipleSelect('roles', trans('admin.roles'))->options(Role::all()->pluck('name', 'id'));
//        $this->form->multipleSelect('permissions', trans('admin.permissions'))->options(Per::all()->pluck('name', 'id'));


        $this->form->display('created_at', trans('admin.created_at'));
        $this->form->display('updated_at', trans('admin.updated_at'));

        // 渲染生成地区选择
        Admin::script("$(document.body).append(`<script src='/assets/admin/js/module/admin-user.js?t=1'>`);");

        $this->form->saving(function (Form $form) {
            if ($form->password && $form->model()->password != $form->password) {
                $form->password = Hash::make($form->password);
            }
        });

        $this->form->saved(function (Form $form) {
            //
        });
    }

    /**
     * 保存前回调
     *
     * @return void
     */
    public function saving()
    {
        parent::saving();
        //保存前回调
        $this->form->saving(function (Form $form) {
            //
        });
    }

    /**
     *  保存后回调
     *
     * @return void
     */
    protected function saved()
    {
        parent::saved();
        // 保存后回调
        $this->form->saved(function (Form $form) {
            //
        });
    }
}