Laravel Admin出现Disk [admin]未配置错误,创建UserController后复现求助
解决Laravel Admin中「Disk [admin] not configured」重复出现的问题
问题重现
- 初始错误提示:
Disk [admin] not configured, please add a disk config in config/filesystems.php - 按提示添加
admin磁盘配置后错误消失,显示默认用户表单 - 创建关联User模型的自定义
UserController后,表单无变化,原磁盘错误再次出现
添加的config/filesystems.php配置:
'admin' => [ 'driver' => 'local', 'root' => storage_path('app'), 'visibility' => 'public', 'url' => env('APP_URL').'/storage', ],
自定义UserController代码:
<?php namespace App\Admin\Controllers; use App\Models\User; use Encore\Admin\Controllers\AdminController; use Encore\Admin\Form; use Encore\Admin\Grid; use Encore\Admin\Show; class UserController extends AdminController { protected $title = 'User'; protected function grid() { $grid = new Grid(new User()); $grid->column('id', __('Id')); $grid->column('full_name', __('Full name')); $grid->column('email', __('Email')); $grid->column('password', __('Password')); $grid->column('phone_number', __('Phone number')); $grid->column('address', __('Address')); $grid->column('remember_token', __('Remember token')); $grid->column('is_admin', __('Is admin')); $grid->column('created_at', __('Created at')); $grid->column('updated_at', __('Updated at')); $grid->column('token', __('Token')); $grid->column('is_Verified', __('Is Verified')); $grid->column('email_verified_at', __('Email verified at')); return $grid; } protected function detail($id) { $show = new Show(User::findOrFail($id)); $show->field('id', __('Id')); $show->field('full_name', __('Full name')); $show->field('email', __('Email')); $show->field('password', __('Password')); $show->field('phone_number', __('Phone number')); $show->field('address', __('Address')); $show->field('remember_token', __('Remember token')); $show->field('is_admin', __('Is admin')); $show->field('created_at', __('Created at')); $show->field('updated_at', __('Updated at')); $show->field('token', __('Token')); $show->field('is_Verified', __('Is Verified')); $show->field('email_verified_at', __('Email verified at')); return $show; } protected function form() { $form = new Form(new User()); $form->text('full_name', __('Full name')); $form->email('email', __('Email')); $form->password('password', __('Password')); $form->text('phone_number', __('Phone number')); $form->text('address', __('Address')); $form->text('remember_token', __('Remember token')); $form->switch('is_admin', __('Is admin')); $form->text('token', __('Token')); $form->switch('is_Verified', __('Is Verified')); $form->datetime('email_verified_at', __('Email verified at'))->default(date('Y-m-d H:i:s')); return $form; } }
解决方法
1. 修正admin磁盘配置
Laravel Admin默认依赖admin磁盘处理文件操作,原配置的root指向storage/app,该目录默认无法直接对外访问,建议修改为public/uploads目录:
// config/filesystems.php 'admin' => [ 'driver' => 'local', 'root' => public_path('uploads'), 'visibility' => 'public', 'url' => env('APP_URL').'/uploads', ],
执行命令创建目录并设置权限:
mkdir public/uploads chmod -R 755 public/uploads
2. 优化UserController字段配置
- 移除框架自动维护的字段:
remember_token、token无需手动编辑,从表单中删除 - 优化密码字段:添加加密规则和确认框,避免明文存储
修改后的form()方法:
protected function form() { $form = new Form(new User()); $form->text('full_name', __('Full name'))->rules('required'); $form->email('email', __('Email'))->rules('required|email|unique:users'); $form->password('password', __('Password'))->rules('nullable|confirmed')->help('留空则不修改密码'); $form->password('password_confirmation', __('Confirm Password')); $form->text('phone_number', __('Phone number')); $form->text('address', __('Address')); $form->switch('is_admin', __('Is admin'))->default(false); $form->switch('is_Verified', __('Is Verified'))->default(false); $form->datetime('email_verified_at', __('Email verified at'))->nullable(); // 自动处理密码加密 $form->saving(function (Form $form) { if ($form->password && $form->password === $form->password_confirmation) { $form->password = bcrypt($form->password); } else { unset($form->password); } }); return $form; }
3. 清除配置缓存
修改配置后执行命令刷新缓存,确保新配置生效:
php artisan config:clear
4. 确认路由注册
确保在app/Admin/routes.php中注册了用户资源路由:
$router->resource('users', \App\Admin\Controllers\UserController::class);
关于Laravel Admin视图编辑的说明
Laravel Admin无需手动编辑视图文件,界面完全由控制器中的grid()、form()、detail()方法定义,通过调用内置组件自动生成对应的列表、表单和详情页。
内容的提问来源于stack exchange,提问作者Quân Đồng Tiến
相关产品推荐
相关产品推荐

