laravel-admin创建账号密码
xuexi 2026-02-06 10:05:45 发表在:PHP 查看数:19
 protected function form()
    {
        $form = new Form(new JianguanUser);

        $form->display('id', __('ID'));
        $form->text('name', __('姓名'))->placeholder('非登录账号');
        $form->text('tel', __('联系电话'));

        $form->select('danwei_id', __('所属部门'))->options(JianguanDanwei::orderBy('id', 'desc')->pluck('name', 'id'));
        $form->text('username', __('用户账号'));

        // $form->text('password', __('用户密码'))->default( Str::random(10, 'alnum') )->help('随机密码可修改');


      // 密码字段
    $form->password('password', '密码')
        ->rules('confirmed|min:6')
        ->default('')
        ->help('至少6位字符,留空则不修改');

    // 确认密码字段
    $form->password('password_confirmation', '确认密码')
        ->default('')
        ->attribute('autocomplete', 'new-password');

    // 其他字段...
        $form->display('created_at', __('创建时间'));
        $form->display('updated_at', __('更新时间'));  
    // 保存时的处理
    $form->saving(function (Form $form) {
        if (empty($form->password)) {
            $form->model()->offsetUnset('password');
        }
    });

    // 
    //  $form->text('title', '标题')->rules('required');

    // $form->select('assigned_to_id', '分配用户')->options(Bumen::all()->pluck('name', 'id'))->rules('required');


        return $form;

    }

Laravel修改器命名规则:set + 字段名(首字母大写) + Attribute

模型中加密

数据逻辑归模型,表单逻辑归控制器
  1. 模型层实现密码加密的核心是Laravel 字段修改器,命名严格遵循 setPasswordAttribute 规则,非空值自动 bcrypt 加密; 2.该方式实现全局加密复用,任何地方操作 AdminUser 模型的 password 字段,都会自动加密,无需重复写逻辑。

    <?
    namespace App\Admin\Models;
    use Encore\Admin\Auth\Database\Administrator; // 继承Laravel-Admin原生管理员基类
    class AdminUser extends Administrator
    {
     // 可批量赋值字段(保留之前添加的nickname,必须包含password)
     protected $fillable = [
         'nickname', 'username', 'password', 'avatar', 'remember_token'
     ];
    
     // 隐藏敏感字段(返回数组时不显示密码、记住令牌)
     protected $hidden = [
         'password', 'remember_token',
     ];
    
     /********************* 核心:密码自动加密修改器 *********************/
     // Laravel修改器命名规则:set + 字段名(首字母大写) + Attribute
     public function setPasswordAttribute($value)
     {
         // 逻辑:只有密码值非空时,才加密存储;空值则不处理(编辑时留空密码的核心)
         if (!empty($value)) {
             $this->attributes['password'] = bcrypt($value);
         }
         // 若$value为空,直接不赋值,数据库原有密码不会被覆盖
     }
       // 可选:获取器,比如隐藏密码的部分字符(列表页展示时用)
     public function getPasswordShowAttribute()
     {
         return '******'; // 列表页如果要展示密码,只显示星号
     }
    }
最近访问时间:2026-02-06 23:38:57
知识库:422条鸣谢:TAY  备案号:蜀ICP备2024090044号-1