laravel-4 – Laravel:控制器不存在

前端之家收集整理的这篇文章主要介绍了laravel-4 – Laravel:控制器不存在前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我在/ app / controllers / admin /文件夹中添加了新控制器,并在/app/routes.PHP文件添加了路由.然后我运行以下命令来自动加载它们

PHP artisan dump-autoload

我收到以下错误

Mcrypt PHP extension required.

我按照https://askubuntu.com/questions/460837/mcrypt-extension-is-missing-in-14-04-server-for-mysql给出的指令,能够解决mcrypt问题.

之后,我运行PHP artisan dump-autoload命令,但仍然出现以下错误

{"error":{"type":"ReflectionException","message":"Class CoursesController does not exist","file":"\/var\/www\/html\/vendor\/laravel\/framework\/src\/Illuminate\/Container\/Container.PHP","line":504}}

这是我的routes.PHP文件代码

Route::group(array('before' => 'adminauth','except' => array('/admin/login','/admin/logout')),function() {
    Route::resource('/admin/courses','CoursesController');
    Route::resource('/admin/teachers','TeachersController');    
    Route::resource('/admin/subjects','SubjectsController');
});

这是CoursesController.PHP文件代码

<?PHP

class CoursesController extends BaseController
{

    public function index()
    {
        $courses = Course::where('is_deleted',0)->get();
        return View::make('admin.courses.index',compact('courses'));
    }

    public function create()
    {
        return View::make('admin.courses.create');
    }

   public function store()
    {
        $validator = Validator::make($data = Input::all(),Course::$rules);

        if ($validator->fails()) {
            $messages = $validator->messages();
            $response = '';
            foreach ($messages->all(':message') as $message) {
                $response = $message;
            }
            return Response::json(array('message'=>$response,'status'=>'failure'));
        } else {
            Course::create($data);
            return Response::json(array('message'=>'Course created successfully','status'=>'success'));
        }
    }

    public function edit($id)
    {
        $course = Course::find($id);
        return View::make('admin.courses.edit',compact('course'));
    }

    public function update($id)
    {
        $course = Course::findOrFail($id);
        $validator = Validator::make($data = Input::all(),Course::editRules($id));

        if ($validator->fails()) {
            $messages = $validator->messages();
            $response = '';
            foreach ($messages->all(':message') as $message) {
                $response = $message;
            }
            return Response::json(array('message'=>$response,'status'=>'failure'));
        } else {
            $course->update($data);
            return Response::json(array('message'=>'Course updated successfully','status'=>'success'));
        }
    }

    public function destroy($id)
    {
        Course::findOrFail($id)->update(array('is_deleted' => '1'));
        return Response::json(array('message'=>'Course deleted successfully','status'=>'success'));
    }

}

解决方法

您是否将自动加载类图添加到composer.json文件中?
打开您的composer.json文件添加

"autoload": {
        "classmap": [
            "app/controllers/admin",]
    }

如果在控制器中添加文件夹,则需要将其添加到composer.json文件中.然后跑

composer dumpautoload

或替代

转到app / start / global.PHP添加

ClassLoader::addDirectories(array(
    app_path().'/controllers/admin',));

猜你在找的Laravel相关文章