nee*_*raj 5 controller autoload laravel-4
我在/ app/controllers/admin /文件夹中添加了新控制器,并在/app/routes.php文件中添加了路由.然后我运行以下命令来自动加载它们
php artisan dump-autoload
Run Code Online (Sandbox Code Playgroud)
我收到以下错误
Mcrypt PHP extension required.
Run Code Online (Sandbox Code Playgroud)
我按照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}}
Run Code Online (Sandbox Code Playgroud)
这是我的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');
});
Run Code Online (Sandbox Code Playgroud)
这是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'));
}
}
Run Code Online (Sandbox Code Playgroud)
Aks*_* kn 13
2021 年答案(Laravel 8.5)
在你的控制器中;
namespace App\Http\Controllers;
use App\Http\Controllers\Controller;
use App\Providers\RouteServiceProvider;
use Illuminate\Http\Request;
class AuthController extends Controller
{
public function login(Request $request){
return "login";
}
}
Run Code Online (Sandbox Code Playgroud)
在你的路线中;
use App\Http\Controllers\AuthController;
Route::post('/login', [AuthController::class, 'login']);
Run Code Online (Sandbox Code Playgroud)
文档 = https://laravel.com/docs/8.x/routing#the-default-route-files
Sus*_*yal 12
您是否将自动加载类图添加到composer.json文件中?打开您的composer.json文件并添加
"autoload": {
"classmap": [
"app/controllers/admin",
]
}
Run Code Online (Sandbox Code Playgroud)
如果在控制器中添加文件夹,则需要将其添加到composer.json文件中.然后跑
composer dumpautoload
Run Code Online (Sandbox Code Playgroud)
或替代
转到app/start/global.php并添加
ClassLoader::addDirectories(array(
app_path().'/controllers/admin',
));
Run Code Online (Sandbox Code Playgroud)
就我而言,我必须更改路由文件:
Route::get('/','SessionController@accessSessionData');
Run Code Online (Sandbox Code Playgroud)
对此:
Route::get('/','App\Http\Controllers\SessionController@accessSessionData');
Run Code Online (Sandbox Code Playgroud)
然后用以下命令清除缓存:
php artisan route:clear
Run Code Online (Sandbox Code Playgroud)
使事情顺利进行。
我们需要通过命令行创建控制器。
php artisan make:controller nameController --plain。
在Laravel 5之前,make名称空间不可用。相反,这有效
php artisan controller:make nameController
在项目目录中执行命令,然后创建函数。
就我而言,在控制器代码的顶部,我添加以下行:
命名空间App \ Http \ Controllers \ CustomFolder \ ControllerClassName;
我的问题解决了
有点晚了,但根据我的经验,将其添加到 RouteServiceProvider.php 可以解决问题
protected $namespace = 'App\Http\Controllers';
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
39162 次 |
| 最近记录: |