PHP 版本 - 8.2.4 拉拉维尔 10
我的 Laravel 应用程序中的其中一条路线遇到问题。我已经为“/about-us”URL 定义了一条路由,但每当我尝试访问它时,都会收到 404 NOT FOUND 错误。我花了一些时间调试它,但我似乎无法找出导致问题的原因。
这是我的 web.php 文件中的路由代码:
Route::get('/about-us', [SiteController::class, 'about'])->name('about-us');
这是 SiteController 中相应的方法:
<?php
namespace App\Http\Controllers;
use App\Models\TextWidget;
use Illuminate\Http\Request;
use Illuminate\View\View;
class SiteController extends Controller
{
public function about(): View
{
$widget = TextWidget::query()
->where('key', '=', 'about-page')
->where('active', '=', 1)
->first();
return view('about', compact('widget'));
}
}
所有其他路线均按预期运行。
我也检查了数据库,在'TextWidget'表中有一条键'about-page'和'active'设置为1的记录。
提前感谢您的时间和帮助!
标签:laravel、laravel-路由
我还清除了路由缓存并进行了检查。 重新启动开发服务器但不起作用。
当然,这是检查和清除 Laravel 路由缓存的步骤的精简版本:
1。检查路由缓存: 导航到 bootstrap/cache 并检查名为 paths.php 的文件以查看您的路由是否已缓存。
2。清除路由缓存: 在项目的根目录中,运行:
php artisan route:clear
要清除其他缓存,请使用:
php artisan cache:clear
清除缓存后,测试一下你
要解决该问题,请按以下步骤操作:
1- 定义路由时不需要使用/开头,路由名称应该这样写:
Route::get('about-us', [SiteController::class, 'about'])->name('about.us');
或
Route::get('about-us', [SiteController::class, 'about'])->name('aboutus');
2- 然后在终端中输入以下命令以确保 Laravel 中定义了路由。此命令将显示 Laravel 中定义的所有路由的列表:
php artisan route:list
如果您在列表中看到您的路线,则表示您的路线已定义 在 Laravel 中。
3- 在终端中输入以下命令,确保清除所有缓存:
php artisan optimize:clear
4- 现在呼叫您的路线。如果再次遇到 404 错误,请按照以下步骤操作:
将您在 web.php 文件中创建的路由移动到 已定义路线列表的开头或末尾并重复 再次执行第 3 步。
祝你好运
可能您必须检查视图名称是否为“about”,以及视图“about”是否位于视图文件夹中的另一个文件夹中。请记住,如果您在同一条路线上使用相同的调用方法,您也可能会遇到问题。也许你可以尝试避免写“public function about(): View”而写成“public function about(){}”。