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,“…”]
中的前缀(某人的文件夹),并重新导入了控制器父级。然后重新启动了服务器。现在一切正常