Php 类App\Http\Controllers\UserController不存在

Php 类App\Http\Controllers\UserController不存在,php,laravel,laravel-5.1,laravel-5.2,Php,Laravel,Laravel 5.1,Laravel 5.2,加载路由/用户或/用户/添加时出现问题并返回错误 Route.php第280行中的ReflectionException:类 App\Http\Controllers\App\Controllers\UserController不存在 UserController确实存在,并且不在“我的控制器”文件夹中的文件夹中 我的路线文件 Route::group(['middleware' => 'auth'], function(){ Route::get('/route/selector

加载路由/用户或/用户/添加时出现问题并返回错误


Route.php第280行中的ReflectionException:类 App\Http\Controllers\App\Controllers\UserController不存在

UserController确实存在,并且不在“我的控制器”文件夹中的文件夹中

我的路线文件

Route::group(['middleware' => 'auth'], function(){
    Route::get('/route/selector', 'PagesController@selectRoute');

    // Admin Only //
    Route::group(['middleware' => 'isAdmin'], function(){
        Route::get('/admin', 'AdminController@index');

        Route::get('/users', 'UserController@index');
        Route::get('/user/add', 'UserController@getAdd');
        Route::post('/user/add', 'UserController@postAdd');
        Route::get('/user/edit/{id}', 'UserController@getEdit');
        Route::post('/user/edit/{id}', 'UserController@postEdit');
        Route::get('/user/delete/{id}', 'UserController@delete');
    });
});
我的用户控制器

<?php

namespace App\Http\Controllers;

use App\Http\Requests;
use App\User;
use App\UserTypes;

use Auth;
use Hashids;
use Redirect;
use Request;
use Hash;

class UserController extends Controller
{
    public function index(){
        $users = User::get();
        return view('users.index', compact('users'));
    }

    public function getAdd(){
        $user_type = UserTypes::pluck('user_type', 'id');
        return view('users.add', compact('user_type'));
    }

    public function postAdd(){
        $input = Request::all();
        $password = str_random(8);
        User::create(
            'email' => $input['email'],
            'password' => Hash::make($password),
            'first_name' => $input['first_name'],
            'surname' => $input['surname'],
            'phone_number' => $input['phone_number'],
            'user_type' => $input['user_type'],
        );

        return Redirect::action('UserController@index');
    }

    public function getEdit($id){

    }

    public function postEdit($id){

    }

    public function delete($id){
        User::find(current(Hashids::decode($id)))->delete();
        return Redirect::action('UserController@index');
    }

}
替换此代码

Route::group(['middleware' => 'isAdmin'], function(){
    Route::get('/admin', 'AdminController@index');

    Route::get('/users', 'UserController@index');
    Route::get('/user/add', 'UserController@getAdd');
    Route::post('/user/add', 'UserController@postAdd');
    Route::get('/user/edit/{id}', 'UserController@getEdit');
    Route::post('/user/edit/{id}', 'UserController@postEdit');
    Route::get('/user/delete/{id}', 'UserController@delete');
});
用这个

Route::group(['middleware' => 'isAdmin'], function(){
    Route::get('/admin', 'AdminController@index');
    Route::group(['namespace' => YOUR_NAMESPACE], function(){
        Route::get('/users', 'UserController@index');
        Route::get('/user/add', 'UserController@getAdd');
        Route::post('/user/add', 'UserController@postAdd');
        Route::get('/user/edit/{id}', 'UserController@getEdit');
        Route::post('/user/edit/{id}', 'UserController@postEdit');
        Route::get('/user/delete/{id}', 'UserController@delete');
    });
});
&在
UserController
中,您还应该更正
命名空间

e、 g您的
UserController
位于
app/Controllers
目录中,那么您的
UserController
将如下所示

<?php

namespace App\Controllers;

use App\Http\Requests;
use App\User;
use App\UserTypes;

use Auth;
use Hashids;
use Redirect;
use Request;
use Hash;

class UserController extends Controller
{
    public function index(){
        $users = User::get();
        return view('users.index', compact('users'));
    }

    public function getAdd(){
        $user_type = UserTypes::pluck('user_type', 'id');
        return view('users.add', compact('user_type'));
    }

    public function postAdd(){
        $input = Request::all();
        $password = str_random(8);
        User::create(
            'email' => $input['email'],
            'password' => Hash::make($password),
            'first_name' => $input['first_name'],
            'surname' => $input['surname'],
            'phone_number' => $input['phone_number'],
            'user_type' => $input['user_type'],
        );

        return Redirect::action('UserController@index');
    }

    public function getEdit($id){

    }

    public function postEdit($id){

    }

    public function delete($id){
        User::find(current(Hashids::decode($id)))->delete();
        return Redirect::action('UserController@index');
    }

}
Route::group(['middleware' => 'auth'], function(){
    Route::get('/route/selector', 'PagesController@selectRoute');

    // Admin Only //
    Route::group(['middleware' => 'isAdmin'], function(){
        Route::get('/admin', 'AdminController@index');
        Route::group(['namespace' => '\App\Controllers'], function(){
            Route::get('/users', 'UserController@index');
            Route::get('/user/add', 'UserController@getAdd');
            Route::post('/user/add', 'UserController@postAdd');
            Route::get('/user/edit/{id}', 'UserController@getEdit');
            Route::post('/user/edit/{id}', 'UserController@postEdit');
            Route::get('/user/delete/{id}', 'UserController@delete');
        });
    });
});

create方法缺少正确的数组括号

User::create([
            'email' => $input['email'],
            'password' => Hash::make($password),
            'first_name' => $input['first_name'],
            'surname' => $input['surname'],
            'phone_number' => $input['phone_number'],
            'user_type' => $input['user_type'],
        ]);

Laravel8.x更新有一种不同的使用路由的方法

以前是:

Route::get('/', 'PagesController@index');
现在变成了

Route::get('/',[PagesController::class, 'index']);
注意:不要忘记在顶部的routes(web.php)文件中导入(使用)控制器。比如:

use App\Http\Controllers\PagesController;

Laravel 8更新了路由格式,请在控制器路由上尝试更新的格式


使用App\Http\Controllers\UserController

<?php

namespace App\Http\Controllers;

use App\Http\Requests;
use App\User;
use App\UserTypes;

use Auth;
use Hashids;
use Redirect;
use Request;
use Hash;

class UserController extends Controller
{
    public function index(){
        $users = User::get();
        return view('users.index', compact('users'));
    }

    public function getAdd(){
        $user_type = UserTypes::pluck('user_type', 'id');
        return view('users.add', compact('user_type'));
    }

    public function postAdd(){
        $input = Request::all();
        $password = str_random(8);
        User::create(
            'email' => $input['email'],
            'password' => Hash::make($password),
            'first_name' => $input['first_name'],
            'surname' => $input['surname'],
            'phone_number' => $input['phone_number'],
            'user_type' => $input['user_type'],
        );

        return Redirect::action('UserController@index');
    }

    public function getEdit($id){

    }

    public function postEdit($id){

    }

    public function delete($id){
        User::find(current(Hashids::decode($id)))->delete();
        return Redirect::action('UserController@index');
    }

}
路由::get('/user',[UserController::class',index'])


已修复。

使用App\Http\Controllers\UserController

<?php

namespace App\Http\Controllers;

use App\Http\Requests;
use App\User;
use App\UserTypes;

use Auth;
use Hashids;
use Redirect;
use Request;
use Hash;

class UserController extends Controller
{
    public function index(){
        $users = User::get();
        return view('users.index', compact('users'));
    }

    public function getAdd(){
        $user_type = UserTypes::pluck('user_type', 'id');
        return view('users.add', compact('user_type'));
    }

    public function postAdd(){
        $input = Request::all();
        $password = str_random(8);
        User::create(
            'email' => $input['email'],
            'password' => Hash::make($password),
            'first_name' => $input['first_name'],
            'surname' => $input['surname'],
            'phone_number' => $input['phone_number'],
            'user_type' => $input['user_type'],
        );

        return Redirect::action('UserController@index');
    }

    public function getEdit($id){

    }

    public function postEdit($id){

    }

    public function delete($id){
        User::find(current(Hashids::decode($id)))->delete();
        return Redirect::action('UserController@index');
    }

}
路由::get('/user',[UserController::class',index])

Laravel 8更新了路线格式。以上路线仅适用于laravel 8或更高版本

如果低于8,请尝试使用

路由::获取('/user','UserController@index');

我在
controller/api
文件夹中创建了
AppController
,因此这是我的路径。您需要给出控制器的路径。

在文件routes/web.php上

使用App\Http\Controllers\UserController
然后

Route::resource('user',UserController::class)

尝试运行
composer dumpauto
命令。您的
UserController
的路径是什么?当您使用
名称空间App\Http\Controllers
时,它必须位于
App/Http/Controllers
目录中。谢谢这两个目录,composer dumpauto没有任何区别。当我删除User::create()时,控制器也在app/Http/Controllers目录中;部分错误消失,是否与此有关?我的用户控制器驻留在app/Http/Controllers中,而不是app/Controllers中。这会有所不同吗?我以前构建过很多laravel应用程序,这从来都不是问题;部分错误消失,是否与此有关?Route.php第280行中的ReflectionException:Class App\Http\Controllers\App\Controllers\UserController不存在exist@KieranHeadley您的路由命名空间不正确。如果我看到您的
路线服务提供
&
路线
,那么我可以找到解决方案。对于临时路由,您可以使用我的路由部分解决方案,并将此文本替换为
route::group(['namespace'=>'\App\Controllers'],function(){
,替换为
route::group(['namespace'=>'\App\Http\Controllers'],function(){
My route namespace在/App/Providers/RouteServiceProvider.phpf中设置为'App\Http\Controllers',在您的路由器(web.php/api.php)上添加('use App\Http\Controllers\PagesController')。它对我有效。我在
保存移动
控制器文件(在
重构
选项下)时发生了这种情况到一个文件夹。我按照@Maz341所说的做了,但另外还更正了MyController类文件中的名称空间,删除了
[prefix\MyController::class,“…”]
中的前缀(某人的文件夹),并重新导入了控制器父级。然后重新启动了服务器。现在一切正常