[解決済み] Laravel: コントローラが存在しない
2022-02-27 01:35:13
質問
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}}
以下は私のコードです。 ルーティング.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 ファイルに autoload classmap を追加しましたか? composer.jsonを開き、以下の項目を追加してください。
"autoload": {
"classmap": [
"app/controllers/admin",
]
}
コントローラ内にフォルダを追加する場合は、composer.json ファイルに追加する必要があります。そして
composer dumpautoload
または代替案
app/start/global.phpに追加してください。
ClassLoader::addDirectories(array(
app_path().'/controllers/admin',
));
関連
-
[解決済み] Home'という名前のコントローラに一致するタイプが複数見つかりました。
-
[解決済み] Laravel: コントローラが存在しない
-
[解決済み] PHP Composerを使ってLaravelからパッケージを削除するにはどうしたらいいですか?
-
[解決済み] ASP.NET MVCコントローラは、Imageを返すことができますか?
-
[解決済み] LaravelはMcrypt PHPエクステンションを必要とします
-
[解決済み] Laravelで特定のマイグレーションをロールバックする
-
[解決済み】AngularJSのコントローラファイルを別々に作成する方法は?
-
[解決済み】Laravel 5で別のコントローラからコントローラのメソッドにアクセスする
-
[解決済み] Laravelのデイリーログが間違ったパーミッションで作成される
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン