Class 在 laravel 4 中找不到控制器
Class Controller not found in laravel 4
我是 Laravel 的初学者,当我尝试使用 Controller 时遇到此错误
Illuminate\Contracts\Container\BindingResolutionException
Target class [PostsController] does not exist.
http://127.0.0.1:8000/posts
routes 目录包含 web.php 路由,我正在使用
Route::get('/posts', 'PostsController@index');
重定向到 class PostsController
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class PostsController extends Controller
{
public function index() {
echo "asdas";
}
}
在深入研究您的问题之前,您真的不应该使用 Laravel 4。我们快到第 9 版了。
Laravel 4 缺少功能、安全修复和当前 PHP 版本支持(是的,在撰写本文时,不应使用所有低于 7 的版本)。
话虽这么说,您可能有充分的理由,例如处理难以更新的遗留项目。
您可以做的是在路由文件中使用完全限定的命名空间。
Route::get('/posts', '\App\Http\Controllers\PostsController@index');
此外,请三重检查您是否正在使用 Laravel 4。您遇到的问题也可能是由最新的 Laravel 更新(版本 8)之一引起的,其中默认名称空间已从 App\Providers\RouteServiceProvider
文件中删除。
如果你犯了一个错误,你在 Laravel 8,那么只需使用以下符号:
Route::get('/posts', [\App\Http\Controllers\PostsController::class,'index']);
[编辑]
如评论中所述,您也可以在路由文件中取消注释 // protected $namespace = 'App\Http\Controllers';
。当然,这适用于 Laravel 8,所以如果您在 Laravel 4,请忽略此编辑。
我是 Laravel 的初学者,当我尝试使用 Controller 时遇到此错误
Illuminate\Contracts\Container\BindingResolutionException Target class [PostsController] does not exist. http://127.0.0.1:8000/posts
routes 目录包含 web.php 路由,我正在使用
Route::get('/posts', 'PostsController@index');
重定向到 class PostsController
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class PostsController extends Controller
{
public function index() {
echo "asdas";
}
}
在深入研究您的问题之前,您真的不应该使用 Laravel 4。我们快到第 9 版了。
Laravel 4 缺少功能、安全修复和当前 PHP 版本支持(是的,在撰写本文时,不应使用所有低于 7 的版本)。
话虽这么说,您可能有充分的理由,例如处理难以更新的遗留项目。
您可以做的是在路由文件中使用完全限定的命名空间。
Route::get('/posts', '\App\Http\Controllers\PostsController@index');
此外,请三重检查您是否正在使用 Laravel 4。您遇到的问题也可能是由最新的 Laravel 更新(版本 8)之一引起的,其中默认名称空间已从 App\Providers\RouteServiceProvider
文件中删除。
如果你犯了一个错误,你在 Laravel 8,那么只需使用以下符号:
Route::get('/posts', [\App\Http\Controllers\PostsController::class,'index']);
[编辑]
如评论中所述,您也可以在路由文件中取消注释 // protected $namespace = 'App\Http\Controllers';
。当然,这适用于 Laravel 8,所以如果您在 Laravel 4,请忽略此编辑。