web-dev-qa-db-ja.com

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'));
    }

}
6
neeraj

Autoloadクラスマップをcomposer.jsonファイルに追加しましたか? composer.jsonファイルを開いて追加します

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

コントローラー内にフォルダーを追加する場合は、composer.jsonファイルに追加する必要があります。次に実行します

composer dumpautoload

または代替

app/start/global.phpに移動して追加します

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

私の場合、コントローラーコードの先頭に次の行を追加します。

名前空間App\Http\Controllers\CustomFolder\ControllerClassName;

そして私の問題は解決されました

6
Baim Wrong

コマンドラインからコントローラーを作成する必要があります。

php artisan make:controller nameController --plain

Laravel 5より前では、make名前空間は使用できません。代わりに、これは機能します

php artisan controller:make nameController

プロジェクトディレクトリ内でコマンドを実行してから、関数を作成します。

6
Balasubramanian

することを忘れないでください:

php artisan route:clear

私の場合、これは、ルートコードを変更した後にこのエラーが発生したときの解決策でした。

2
leo

あなたの問題はすでに修正されたと思います。しかし、これは何をしたかです。

構造

Http
  .Auth
  .CustomControllerFolder
    -> CustomController.php

これをルートファイルで機能させるには、たとえば次のように正しい名前空間を使用してください。

  Route::group(['namespace'=>'CustomControllerFolder','prefix'=>'prefix'],
      function() {

   //define your route here
}

また、コントローラでnamespace App\Http\Controllers\CustomControllerFolderを使用することを忘れないでください。

これで問題が解決するはずです。

ありがとう

2
usrNotFound

ファイルの名前をEmployeeRequestContollerからEmployeeRequestsContollerに変更したため、この問題が発生しましたが、名前を変更すると.php拡張子!

再実行したときphp artisan make:controller EmployeeRequestsContoller頭がおかしくなっていないことを確認するために、ファイルが表示され、間違いをはっきりと確認できました。

/EmployeeRequestsContoller
/EmployeeRequestsContoller.php

名前を変更した場合は、拡張機能があることを確認してください!

1
haakym

欠落していることもありますnamespace App\Http\Controllers;コントローラーコードの上に。

0
Aaron Liu