我正在使用laravel 4.2
。我的AdminUsersController
看起来像这样:
<?php
class AdminUsersController extends AdminController {
/**
* User Model
* @var User
*/
protected $user;
/**
* Role Model
* @var Role
*/
protected $role;
/**
* Permission Model
* @var Permission
*/
protected $permission;
/**
* Inject the models.
* @param User $user
* @param Role $role
* @param Permission $permission
*/
public function __construct(User $user, Role $role, Permission $permission)
{
parent::__construct();
$this->user = $user;
$this->role = $role;
$this->permission = $permission;
}
/**
* Display a listing of the resource.
*
* @return Response
*/
public function getIndex()
{
// Title
$title = Lang::get('admin/users/title.user_management');
// Grab all the users
$users = $this->user;
// Show the page
return View::make('admin/users/index', compact('users', 'title'));
}
/**
* Show the form for creating a new resource.
*
* @return Response
*/
public function getCreate()
{
// All roles
$roles = $this->role->all();
// Get all the available permissions
$permissions = $this->permission->all();
// Selected groups
$selectedRoles = Input::old('roles', array());
// Selected permissions
$selectedPermissions = Input::old('permissions', array());
// Title
$title = Lang::get('admin/users/title.create_a_new_user');
// Mode
$mode = 'create';
// Show the page
return View::make('admin/users/create_edit', compact('roles', 'permissions', 'selectedRoles', 'selectedPermissions', 'title', 'mode'));
}
/**
* Store a newly created resource in storage.
*
* @return Response
*/
public function postCreate()
{
$this->user->username = Input::get( 'username' );
$this->user->email = Input::get( 'email' );
$this->user->password = Input::get( 'password' );
// The password confirmation will be removed from model
// before saving. This field will be used in Ardent's
// auto validation.
$this->user->password_confirmation = Input::get( 'password_confirmation' );
$this->user->confirmed = Input::get( 'confirm' );
// Permissions are currently tied to roles. Can't do this yet.
//$user->permissions = $user->roles()->preparePermissionsForSave(Input::get( 'permissions' ));
// Save if valid. Password field will be hashed before save
$this->user->save();
if ( $this->user->id )
{
// Save roles. Handles updating.
$this->user->saveRoles(Input::get( 'roles' ));
// Redirect to the new user page
return Redirect::to('admin/users/' . $this->user->id . '/edit')->with('success', Lang::get('admin/users/messages.create.success'));
}
else
{
// Get validation errors (see Ardent package)
$error = $this->user->errors()->all();
return Redirect::to('admin/users/create')
->withInput(Input::except('password'))
->with( 'error', $error );
}
}
/**
* Display the specified resource.
*
* @param $user
* @return Response
*/
public function getShow($user)
{
// redirect to the frontend
}
/**
* Show the form for editing the specified resource.
*
* @param $user
* @return Response
*/
public function getEdit($user)
{
if ( $user->id )
{
$roles = $this->role->all();
$permissions = $this->permission->all();
// Title
$title = Lang::get('admin/users/title.user_update');
// mode
$mode = 'edit';
return View::make('admin/users/create_edit', compact('user', 'roles', 'permissions', 'title', 'mode'));
}
else
{
return Redirect::to('admin/users')->with('error', Lang::get('admin/users/messages.does_not_exist'));
}
}
/**
* Update the specified resource in storage.
*
* @param $user
* @return Response
*/
public function postEdit($user)
{
// Validate the inputs
$validator = Validator::make(Input::all(), $user->getUpdateRules());
if ($validator->passes())
{
$oldUser = clone $user;
$user->username = Input::get( 'username' );
$user->email = Input::get( 'email' );
$user->confirmed = Input::get( 'confirm' );
$password = Input::get( 'password' );
$passwordConfirmation = Input::get( 'password_confirmation' );
if(!empty($password)) {
if($password === $passwordConfirmation) {
$user->password = $password;
// The password confirmation will be removed from model
// before saving. This field will be used in Ardent's
// auto validation.
$user->password_confirmation = $passwordConfirmation;
} else {
// Redirect to the new user page
return Redirect::to('admin/users/' . $user->id . '/edit')->with('error', Lang::get('admin/users/messages.password_does_not_match'));
}
} else {
unset($user->password);
unset($user->password_confirmation);
}
if($user->confirmed == null) {
$user->confirmed = $oldUser->confirmed;
}
$user->prepareRules($oldUser, $user);
// Save if valid. Password field will be hashed before save
$user->amend();
// Save roles. Handles updating.
$user->saveRoles(Input::get( 'roles' ));
} else {
return Redirect::to('admin/users/' . $user->id . '/edit')->with('error', Lang::get('admin/users/messages.edit.error'));
}
// Get validation errors (see Ardent package)
$error = $user->errors()->all();
if(empty($error)) {
// Redirect to the new user page
return Redirect::to('admin/users/' . $user->id . '/edit')->with('success', Lang::get('admin/users/messages.edit.success'));
} else {
return Redirect::to('admin/users/' . $user->id . '/edit')->with('error', Lang::get('admin/users/messages.edit.error'));
}
}
/**
* Remove user page.
*
* @param $user
* @return Response
*/
public function getDelete($user)
{
// Title
$title = Lang::get('admin/users/title.user_delete');
// Show the page
return View::make('admin/users/delete', compact('user', 'title'));
}
/**
* Remove the specified user from storage.
*
* @param $user
* @return Response
*/
public function postDelete($user)
{
// Check if we are not trying to delete ourselves
if ($user->id === Confide::user()->id)
{
// Redirect to the user management page
return Redirect::to('admin/users')->with('error', Lang::get('admin/users/messages.delete.impossible'));
}
AssignedRoles::where('user_id', $user->id)->delete();
$id = $user->id;
$user->delete();
// Was the comment post deleted?
$user = User::find($id);
if ( empty($user) )
{
// TODO needs to delete all of that user's content
return Redirect::to('admin/users')->with('success', Lang::get('admin/users/messages.delete.success'));
}
else
{
// There was a problem deleting the user
return Redirect::to('admin/users')->with('error', Lang::get('admin/users/messages.delete.error'));
}
}
/**
* Show a list of all the users formatted for Datatables.
*
* @return Datatables JSON
*/
public function getData()
{
$users = User::leftjoin('assigned_roles', 'assigned_roles.user_id', '=', 'users.id')
->leftjoin('roles', 'roles.id', '=', 'assigned_roles.role_id')
->select(array('users.id', 'users.username','users.email', 'roles.name as rolename', 'users.confirmed', 'users.created_at'));
return Datatables::of($users)
// ->edit_column('created_at','{{{ Carbon::now()->diffForHumans(Carbon::createFromFormat(\'Y-m-d H\', $test)) }}}')
->edit_column('confirmed','@if($confirmed)
Yes
@else
No
@endif')
->add_column('actions', '<a href="{{{ URL::to(\'admin/users/\' . $id . \'/edit\' ) }}}" class="iframe btn btn-xs btn-default">{{{ Lang::get(\'button.edit\') }}}</a>
@if($username == \'admin\')
@else
<a href="{{{ URL::to(\'admin/users/\' . $id . \'/delete\' ) }}}" class="iframe btn btn-xs btn-danger">{{{ Lang::get(\'button.delete\') }}}</a>
@endif
')
->remove_column('id')
->make();
}
}
我的路线看起来像那样:
<?php
/*
|--------------------------------------------------------------------------
| Application Routes
|--------------------------------------------------------------------------
|
| Here is where you can register all of the routes for an application.
| It's a breeze. Simply tell Laravel the URIs it should respond to
| and give it the Closure to execute when that URI is requested.
|
*/
// Route::get('/', function()
// {
// return View::make('hello');
// });
//
// // Confide routes
// Route::get('users/create', 'UsersController@create');
// Route::post('users', 'UsersController@store');
// Route::get('users/login', 'UsersController@login');
// Route::post('users/login', 'UsersController@doLogin');
// Route::get('users/confirm/{code}', 'UsersController@confirm');
// Route::get('users/forgot_password', 'UsersController@forgotPassword');
// Route::post('users/forgot_password', 'UsersController@doForgotPassword');
// Route::get('users/reset_password/{token}', 'UsersController@resetPassword');
// Route::post('users/reset_password', 'UsersController@doResetPassword');
// Route::get('users/logout', 'UsersController@logout');
/** ------------------------------------------
* Route model binding
* ------------------------------------------
*/
Route::model('user', 'User');
Route::model('role', 'Role');
/** ------------------------------------------
* Route constraint patterns
* ------------------------------------------
*/
Route::pattern('user', '[0-9]+');
Route::pattern('role', '[0-9]+');
Route::pattern('token', '[0-9a-z]+');
/** ------------------------------------------
* Admin Routes
* ------------------------------------------
*/
Route::group(array('prefix' => 'admin', 'before' => 'auth'), function()
{
# User Management
Route::get('users/{user}/show', 'AdminUsersController@getShow');
Route::get('users/{user}/edit', 'AdminUsersController@getEdit');
Route::post('users/{user}/edit', 'AdminUsersController@postEdit');
Route::get('users/{user}/delete', 'AdminUsersController@getDelete');
Route::post('users/{user}/delete', 'AdminUsersController@postDelete');
Route::controller('users', 'AdminUsersController');
# User Role Management
Route::get('roles/{role}/show', 'AdminRolesController@getShow');
Route::get('roles/{role}/edit', 'AdminRolesController@getEdit');
Route::post('roles/{role}/edit', 'AdminRolesController@postEdit');
Route::get('roles/{role}/delete', 'AdminRolesController@getDelete');
Route::post('roles/{role}/delete', 'AdminRolesController@postDelete');
Route::controller('roles', 'AdminRolesController');
# Admin Dashboard
Route::controller('/', 'AdminDashboardController');
});
/** ------------------------------------------
* Frontend Routes
* ------------------------------------------
*/
// User reset routes
Route::get('user/reset/{token}', 'UserController@getReset');
// User password reset
Route::post('user/reset/{token}', 'UserController@postReset');
//:: User Account Routes ::
Route::post('user/{user}/edit', 'UserController@postEdit');
//:: User Account Routes ::
Route::post('user/login', 'UserController@postLogin');
# User RESTful Routes (Login, Logout, Register, etc)
Route::controller('user', 'UserController');
//:: Application Routes ::
# Filter for detect language
Route::when('contact-us','detectLang');
# Contact Us Static Page
Route::get('contact-us', function()
{
// Return about us page
return View::make('site/contact-us');
});
# Index Page - Last route, no matches
Route::get('/', array('before' => 'detectLang','uses' => 'UserController@postLogin'));
我的文件路径如下:
但是,当我打开应用程序的公共文件夹时,出现以下异常:
ReflectionException thrown with message "Class AdminUsersController does not exist"
Stacktrace:
#22 ReflectionException in C:\xampp\htdocs\laravel_project\laravel-application\vendor\laravel\framework\src\Illuminate\Routing\ControllerInspector.php:28
#21 ReflectionClass:__construct in C:\xampp\htdocs\laravel_project\laravel-application\vendor\laravel\framework\src\Illuminate\Routing\ControllerInspector.php:28
#20 Illuminate\Routing\ControllerInspector:getRoutable in C:\xampp\htdocs\laravel_project\laravel-application\vendor\laravel\framework\src\Illuminate\Routing\Router.php:269
#19 Illuminate\Routing\Router:controller in C:\xampp\htdocs\laravel_project\laravel-application\vendor\laravel\framework\src\Illuminate\Support\Facades\Facade.php:211
#18 Illuminate\Support\Facades\Facade:__callStatic in C:\xampp\htdocs\laravel_project\laravel-application\app\routes.php:59
#17 Illuminate\Support\Facades\Route:controller in C:\xampp\htdocs\laravel_project\laravel-application\app\routes.php:59
#16 {closure} in <#unknown>:0
#15 call_user_func in C:\xampp\htdocs\laravel_project\laravel-application\vendor\laravel\framework\src\Illuminate\Routing\Router.php:691
#14 Illuminate\Routing\Router:group in C:\xampp\htdocs\laravel_project\laravel-application\vendor\laravel\framework\src\Illuminate\Support\Facades\Facade.php:211
#13 Illuminate\Support\Facades\Facade:__callStatic in C:\xampp\htdocs\laravel_project\laravel-application\app\routes.php:71
#12 Illuminate\Support\Facades\Route:group in C:\xampp\htdocs\laravel_project\laravel-application\app\routes.php:71
#11 require in C:\xampp\htdocs\laravel_project\laravel-application\vendor\laravel\framework\src\Illuminate\Foundation\start.php:269
#10 {closure} in <#unknown>:0
#9 call_user_func in C:\xampp\htdocs\laravel_project\laravel-application\vendor\laravel\framework\src\Illuminate\Foundation\Application.php:830
#8 Illuminate\Foundation\Application:fireAppCallbacks in C:\xampp\htdocs\laravel_project\laravel-application\vendor\laravel\framework\src\Illuminate\Foundation\Application.php:604
#7 Illuminate\Foundation\Application:bootApplication in C:\xampp\htdocs\laravel_project\laravel-application\vendor\laravel\framework\src\Illuminate\Foundation\Application.php:587
#6 Illuminate\Foundation\Application:boot in C:\xampp\htdocs\laravel_project\laravel-application\vendor\laravel\framework\src\Illuminate\Foundation\Application.php:743
#5 Illuminate\Foundation\Application:handle in C:\xampp\htdocs\laravel_project\laravel-application\vendor\laravel\framework\src\Illuminate\Session\Middleware.php:72
#4 Illuminate\Session\Middleware:handle in C:\xampp\htdocs\laravel_project\laravel-application\vendor\laravel\framework\src\Illuminate\Cookie\Queue.php:47
#3 Illuminate\Cookie\Queue:handle in C:\xampp\htdocs\laravel_project\laravel-application\vendor\laravel\framework\src\Illuminate\Cookie\Guard.php:51
#2 Illuminate\Cookie\Guard:handle in C:\xampp\htdocs\laravel_project\laravel-application\vendor\stack\builder\src\Stack\StackedHttpKernel.php:23
#1 Stack\StackedHttpKernel:handle in C:\xampp\htdocs\laravel_project\laravel-application\vendor\laravel\framework\src\Illuminate\Foundation\Application.php:641
#0 Illuminate\Foundation\Application:run in C:\xampp\htdocs\laravel_project\laravel-application\public\index.php:49
为什么无法找到控制器的任何建议?感谢您的回复!
答案 0 :(得分:2)
您可能应该将composer.json
添加到autoload
- &gt; classmap
部分admin
和user
目录,所以它应如下所示:
"autoload": {
"classmap": [
"app/commands",
"app/controllers",
"app/models",
"app/database/migrations",
"app/database/seeds",
"app/tests/TestCase.php",
"app/controllers/admin",
"app/controllers/user"
]
},
并在保存文件
后运行composer dump-autoload