【问题标题】:Laravel 8 Admin controller don't work - in what problem?Laravel 8 管理控制器不起作用 - 有什么问题?
【发布时间】:2021-08-15 16:16:10
【问题描述】:

我有这条路线:

 Route::group(['prefix' => 'admin', 'namespace' => 'Admin', 'middleware' => ['web', 'auth']], function () {;
    Route::get('/', function () {
        return view('backend.app');
    })->middleware(['auth'])->name('dashboard');

    Route::get('/news', 'News@index');
});

use App\Http\Controllers\News;
Route::get('/news', [News::class, 'index']);
Route::get('/news/{id}', [News::class, 'show']);

我需要打开链接 /admin/news - 但我有错误:目标类 [Admin\News] 不存在。

管理员新闻类:

<?php

namespace App\Http\Controllers\Admin;

use Illuminate\Http\Request;

class News extends Controller
{
    //
    public function __construct()
    {
    }
    public function index()
    {
        var_dump('test');
    }
}

你能帮我吗:我的情况是什么问题?

【问题讨论】:

  • 您的路由文件中是否包含use App\Http\Controllers\Admin\News 语句?仔细检查您的use 声明。
  • 不能将 App\Http\Controllers\News 用作新闻,因为该名称已被使用但是如果我需要公共部分的新闻和管理员中的新闻 - 我必须做什么?
  • 你有两个News 控制器吗?
  • 是的。一个用于公共部分 - 用于用户。第二个 - 用于管理控制器
  • 路由fn后面有分号。即函数(){;删除它并检查。

标签: laravel routes laravel-8


【解决方案1】:

您正在“旧”Laravel 7 样式和较新 Laravel 8 样式之间混合路由定义。选择一个并坚持下去。如果您已将项目从 Laravel 7 升级到 Laravel 8,请考虑重构以保持一致。

由于您有两个 News 控制器,您要么希望使用每个控制器的 FQN(完全限定名称),要么使用别名一个或两个控制器。

use App\Http\Controllers\News;
use App\Http\Controllers\Admin\News as AdminNews; // aliased

Route::group(['prefix' => 'admin', 'namespace' => 'Admin', 'middleware' => ['web', 'auth']], function () {
    Route::get('/', function () {
        return view('backend.app');
    })->middleware(['auth'])->name('dashboard');

    Route::get('/news', [AdminNews::class, 'index']);
});

Route::get('/news', [News::class, 'index']);
Route::get('/news/{id}', [News::class, 'show']);

【讨论】:

    猜你喜欢
    • 2021-03-27
    • 2021-04-09
    • 2021-07-27
    • 2021-11-13
    • 2013-03-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多