Laravel 控制器 class 的问题
Problems with Laravel Controller class
我知道这个问题已经被问过几次了,但是 none 的答案对我有用,这就是我再次问这个问题的原因。
我想在 Laravel 中创建一个小网站,我创建了一个路由和一个控制器,但是当我尝试在 url 中访问它时,我得到这个错误:
Illuminate\Contracts\Container\BindingResolutionException
Target class [Admin\PlanController] does not exist.
这是我的 web.php
:
use Illuminate\Support\Facades\Route;
Route::get('admin/plans', 'Admin\PlanController@index')->name('plans.index');
Route::get('/', function () {
return view('welcome');
});
这是我的PlanController.php
namespace App\Http\Controllers\Admin;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
class PlanController extends Controller
{
public function index(){
return view('admin.pages.plans.index');
}
}
如果有任何帮助,这是我的 RouteServiceProvider.php
protected $namespace = 'App\Http\Controllers';
public function boot()
{
$this->configureRateLimiting();
$this->routes(function () {
Route::prefix('api')
->middleware('api')
->namespace($this->namespace)
->group(base_path('routes/api.php'));
Route::middleware('web')
->namespace($this->namespace)
->group(base_path('routes/web.php'));
});
}
如果您使用 Laravel 8,最好使用新的路由语法,如下所示:
use App\Http\Controllers\Admin\PlanController;
Route::get('/admin/plans', [PlanController::class, 'index'])->name('plans.index');
确保控制器在正确的目录中app/Http/Controllers/Admin
您的代码似乎一切正常。确认控制器的目录必须是
app\Http\Controllers\Admin
或进行更改
$this->routes(function () {
Route::middleware('web')
->namespace('App\Http\Controllers')
->group(base_path('routes/web.php'));
没有在此处使用获取命名空间值作为 RouteServiceProvider.php
中的变量。
您可以在路由中描述完整的命名空间;
Route::get('admin/plans','App\Http\Controllers\Admin\PlanController@index')->name('plans.index');
我知道这个问题已经被问过几次了,但是 none 的答案对我有用,这就是我再次问这个问题的原因。
我想在 Laravel 中创建一个小网站,我创建了一个路由和一个控制器,但是当我尝试在 url 中访问它时,我得到这个错误:
Illuminate\Contracts\Container\BindingResolutionException
Target class [Admin\PlanController] does not exist.
这是我的 web.php
:
use Illuminate\Support\Facades\Route;
Route::get('admin/plans', 'Admin\PlanController@index')->name('plans.index');
Route::get('/', function () {
return view('welcome');
});
这是我的PlanController.php
namespace App\Http\Controllers\Admin;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
class PlanController extends Controller
{
public function index(){
return view('admin.pages.plans.index');
}
}
如果有任何帮助,这是我的 RouteServiceProvider.php
protected $namespace = 'App\Http\Controllers';
public function boot()
{
$this->configureRateLimiting();
$this->routes(function () {
Route::prefix('api')
->middleware('api')
->namespace($this->namespace)
->group(base_path('routes/api.php'));
Route::middleware('web')
->namespace($this->namespace)
->group(base_path('routes/web.php'));
});
}
如果您使用 Laravel 8,最好使用新的路由语法,如下所示:
use App\Http\Controllers\Admin\PlanController;
Route::get('/admin/plans', [PlanController::class, 'index'])->name('plans.index');
确保控制器在正确的目录中app/Http/Controllers/Admin
您的代码似乎一切正常。确认控制器的目录必须是
app\Http\Controllers\Admin
或进行更改
$this->routes(function () {
Route::middleware('web')
->namespace('App\Http\Controllers')
->group(base_path('routes/web.php'));
没有在此处使用获取命名空间值作为 RouteServiceProvider.php
中的变量。
您可以在路由中描述完整的命名空间;
Route::get('admin/plans','App\Http\Controllers\Admin\PlanController@index')->name('plans.index');