/ 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'));
}
}
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',
));
私の場合、コントローラーコードの先頭に次の行を追加します。
名前空間App\Http\Controllers\CustomFolder\ControllerClassName;
そして私の問題は解決されました
コマンドラインからコントローラーを作成する必要があります。
php artisan make:controller nameController --plain
。
Laravel 5より前では、make名前空間は使用できません。代わりに、これは機能します
php artisan controller:make nameController
プロジェクトディレクトリ内でコマンドを実行してから、関数を作成します。
することを忘れないでください:
php artisan route:clear
私の場合、これは、ルートコードを変更した後にこのエラーが発生したときの解決策でした。
あなたの問題はすでに修正されたと思います。しかし、これは何をしたかです。
構造
Http
.Auth
.CustomControllerFolder
-> CustomController.php
これをルートファイルで機能させるには、たとえば次のように正しい名前空間を使用してください。
Route::group(['namespace'=>'CustomControllerFolder','prefix'=>'prefix'],
function() {
//define your route here
}
また、コントローラでnamespace App\Http\Controllers\CustomControllerFolder
を使用することを忘れないでください。
これで問題が解決するはずです。
ありがとう
ファイルの名前をEmployeeRequestContoller
からEmployeeRequestsContoller
に変更したため、この問題が発生しましたが、名前を変更すると.php
拡張子!
再実行したときphp artisan make:controller EmployeeRequestsContoller
頭がおかしくなっていないことを確認するために、ファイルが表示され、間違いをはっきりと確認できました。
/EmployeeRequestsContoller
/EmployeeRequestsContoller.php
名前を変更した場合は、拡張機能があることを確認してください!
欠落していることもありますnamespace App\Http\Controllers;
コントローラーコードの上に。