提问者:小点点

用户控制器不存在


我正在Laravel5.8中构建一个带有内置认证系统的CMS。我的应用程序工作正常,但突然它开始给我一个错误,因为ReflectionException:Class app\Http\Controllers\Users在命令php artisan route:list-v上不存在。但是,如果我定义了一个新的资源路由,那么新的路由页面工作正常。这意味着,正在保存路由文件,但在列出路由时出错。

我没有创建任何名为Users的文件,但我的用户控制器文件名为UserController

以下是我的申请结构:

cms -> project folder
  app
    Http
      Controllers
        Auth
          RegisterController.php
          LoginController.php and other Auth files
        backend
          UserController.php and my other controller files

下面是我的路线文件

Auth::routes();

Route::group(['as'=>'cms.'  ,'prefix'=>'cms'],function(){
    Route::get('/', 'backend\Dashboard@index')->name('dashboard');
    Route::resource('/user-management', 'backend\UserController');
});

下面是驻留在后端文件夹中的我的UserController文件

<?php
namespace App\Http\Controllers\backend;
use App\User;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\Redirect;
use Auth;
use App\Models\backend\Admin;
use App\Models\backend\Menu;
use App\Models\backend\Submenu;
use Config;
use illuminate\Support\Facades\Validator;

class UserController extends Controller
{
    public function __construct()
    {
        $this->middleware('auth:admin');
    }   

    public function AuthRouteAPI(Request $request)
    {
        return $request->user();
    }  

    public function index()
    {
        // GET THE CURRENT LOGGED IN USE
        $user = Auth::user();

        // CODE FOR GETTING MENU LIST FOR CURRENT USER STARTS
        $menutable = (new Menu)->getTable();
        $arrUserMenu = $user->getUserMenus($menutable);   
        // CODE FOR GETTING MENU LIST FOR CURRENT USER ENDS

        $cms_users = Admin::withTrashed()->get();

        return view('backend.pages.users.index', ['arrUserMenu'=>$arrUserMenu, 'cms_users'=>$cms_users]);
    }
    
    public function create()
    {
        // GET THE CURRENT LOGGED IN USE
        $user = Auth::user();

        // CODE FOR GETTING MENU LIST FOR CURRENT USER STARTS
        $menutable = (new Menu)->getTable();
        $arrUserMenu = $user->getUserMenus($menutable);   
        // CODE FOR GETTING MENU LIST FOR CURRENT USER ENDS

        return view('backend.pages.users.create', ['arrUserMenu'=>$arrUserMenu]);
    }
    
    public function store(Request $request)
    {
        $rules = [
            'name' => 'required|min:'.Config::get('cms_const.USER_NAME_MIN_LEN').'|max:'.Config::get('cms_const.USER_NAME_MAX_LEN').'|regex:/(^[A-Za-z ]+$)+/',
            'usrmail' => 'required|email|unique:cms_users,email|max:'.Config::get('cms_const.USER_EMAIL_MAX_LEN'),
            'usrname' => 'required|min:'.Config::get('cms_const.USER_ID_MIN_LEN').'|max:'.Config::get('cms_const.USER_ID_MAX_LEN').'|regex:/(^[A-Za-z0-9._]+$)+/|unique:cms_users,username',
            'usrpwd' => 'required|min:'.Config::get('cms_const.USER_PWD_MIN_LEN').'|max:'.Config::get('cms_const.USER_PWD_MAX_LEN').'|regex:/^(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[0-9])(?=.*?[#?!@$%^&*-_]).{7,}$/'
        ];

        $msgs = [
            'name.required' => 'Please enter name',
            'name.min' => 'Name should not be less then '.Config::get('cms_const.USER_NAME_MIN_LEN').' characters',
            'name.max' => 'Name should not be more then '.Config::get('cms_const.USER_NAME_MAX_LEN').' characters',
            'name.regex' => 'Only alphabets are allowed in name',

            'usrmail.required' => 'Please enter email',
            'usrmail.email' => 'Invalid email',
            'usrmail.unique' => 'Email already exist',
            'usrmail.max' => 'Email should not be more then '.Config::get('cms_const.USER_EMAIL_MAX_LEN').' characters',

            'usrname.required' => 'Please enter the user name',
            'usrname.min' => 'User name should not be less then '.Config::get('cms_const.USER_ID_MIN_LEN').' characters',
            'usrname.max' => 'User name should not be more then '.Config::get('cms_const.USER_ID_MAX_LEN').' characters',
            'usrname.regex' => 'Only Alphabets, Numbers, Dot and Underscore allowed in user name',
            'usrname.unique' => 'User name already exist',

            'usrpwd.required' => 'Please enter the password',
            'usrpwd.min' => 'Password should not be less then '.Config::get('cms_const.USER_PWD_MIN_LEN').' characters',
            'usrpwd.max' => 'Password should not be more then '.Config::get('cms_const.USER_PWD_MAX_LEN').' characters',
            'usrpwd.regex' => 'Invalid password format',
        ];

        $this->validate($request, $rules, $msgs);

        Admin::create([
            'name' => $request->name,
            'username' => $request->usrname,
            'password' => bcrypt($request->usrpwd),
            'email' => $request->usrmail,
        ]);

        return redirect()->route('cms.user-management.index')->with('success','New user account created successfully.');
    }
    
    public function edit($id)
    {
        if(!$id)
        {
            return redirect()->route('cms.user-management.index');
            die;
        }

        $arrRecord = Admin::find($id);
        if(is_null($arrRecord))
        {
            return redirect()->route('cms.user-management.index')->withErrors(['error'=>'Record you are trying to edit does not exist']);
            die;
        }

        // GET THE CURRENT LOGGED IN USE
        $user = Auth::user();

        // CODE FOR GETTING MENU LIST FOR CURRENT USER STARTS
        $menutable = (new Menu)->getTable();
        $arrUserMenu = $user->getUserMenus($menutable);   
        // CODE FOR GETTING MENU LIST FOR CURRENT USER ENDS

        return view('backend.pages.users.edit', ['arrUserMenu'=>$arrUserMenu, 'arrRecord'=>$arrRecord]);
    }

    public function update(Request $request, $id)
    {
        $rules = [
            'name' => 'required|min:'.Config::get('cms_const.USER_NAME_MIN_LEN').'|max:'.Config::get('cms_const.USER_NAME_MAX_LEN').'|regex:/(^[A-Za-z ]+$)+/',
            'usrmail' => 'required|email|max:'.Config::get('cms_const.USER_EMAIL_MAX_LEN'),
            'usrpwd' => 'nullable|min:'.Config::get('cms_const.USER_PWD_MIN_LEN').'|max:'.Config::get('cms_const.USER_PWD_MAX_LEN').'|regex:/^(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[0-9])(?=.*?[#?!@$%^&*-_]).{7,}$/'
        ];        

        $msgs = [
            'name.required' => 'Please enter name',
            'name.min' => 'Name should not be less then '.Config::get('cms_const.USER_NAME_MIN_LEN').' characters',
            'name.max' => 'Name should not be more then '.Config::get('cms_const.USER_NAME_MAX_LEN').' characters',
            'name.regex' => 'Only alphabets are allowed in name',

            'usrmail.required' => 'Please enter email',
            'usrmail.email' => 'Invalid email',
            'usrmail.max' => 'Email should not be more then '.Config::get('cms_const.USER_EMAIL_MAX_LEN').' characters',

            'usrpwd.min' => 'Password should not be less then '.Config::get('cms_const.USER_PWD_MIN_LEN').' characters',
            'usrpwd.max' => 'Password should not be more then '.Config::get('cms_const.USER_PWD_MAX_LEN').' characters',
            'usrpwd.regex' => 'Invalid password format',
        ];

        $this->validate($request, $rules, $msgs);

        $arrRecord = Admin::find($id);
        if(is_null($arrRecord))
        {
            return redirect()->route('cms.user-management.index')->withErrors(['error'=>'Record you are trying to edit does not exist']);
            die;
        }

        $arrRecord->name =  $request->input('name');
        $arrRecord->email = $request->input('usrmail');
        if($request->input('usrpwd'))
        {
            $arrRecord->password = bcrypt($request->input('usrpwd'));
        }
        $arrRecord->save();

        return redirect()->route('cms.user-management.index')->with('success','User account details updated successfully.');
    }

    public function destroy($id)
    {
        try
        {
            $user = Admin::findOrFail($id);
            $user->delete();
            return response()->json(['success'=>'Record successfully deleted', 'status'=>'Suspended']);
        }
        // catch(Exception $e) catch any exception
        catch(ModelNotFoundException $e)
        {
            return response()->json(['error'=>'Record you are trying to delete does not exist']);
        }       
    }
}

我尝试了以下命令,它们都成功运行,但没有一个解决了错误

php artisan clear-compiled
composer dump-autoload 
php artisan optimize 
php artisan route:cache

不知道从何处引用此用户控制器类。

在这方面,有人能帮我吗?我的发展陷入了困境。

多谢各位,

贾韦德


共1个答案

匿名用户

@ClémentBaconnier错误现在已解决。我在api中进行了更改。php到Route::middleware('auth:api')-