You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 09:27:01