404 未找到,但声明了 web.php 路由



在web.php有一个404找不到,用于navbar.blade.php:

<li class="{{Request::is('home') ? 'active' : ''}}"><a href="{{ route('home')}}">Home</a></li>
<li class="{{Request::is('about') ? 'active' : ''}}"><a href="{{ route('about')}}">About</a></li>
<li class="{{Request::is('contact') ? 'active' : ''}}"><a href="{{ route('contact')}}">Contact</a></li>

网络.php:

Route::get('/home', 'PagesController@getHome')->name('home');;
Route::get('/about', 'PagesController@getAbout')->name('about');;
Route::get('/contact', 'PagesController@getContact')->name('contact');
Route::get('/messages', 'MessagesController@getMessages')->name('messages');
Route::post('/contact/submit', 'MessagesController@submit')->name('submit');

页面控制器.php:

class PagesController extends Controller
{
public function getHome(){
return view('home');
}
public function getAbout(){
return view('about');
}
public function getContact(){
return view('contact');
}
}

运行如下命令:

作曲家 dumpautoload &&PHP Artisan View:Clear && PHP Artisan 缓存:清除 &&PHP 工匠路线:清除 &&PHP 工匠 配置:清除

即使在 web 上声明.php也找不到路由。

我刚刚在本地 Laravel 实例上进行了测试,我无法像您拥有它们那样让路由工作。

另外,查看Laravel 8发行说明,您将看到:

在Laravel 的先前版本中,RouteServiceProvider 包含一个 $namespace属性。此属性的值将自动为 前缀为控制器路由定义和操作调用 帮助程序/URL::操作方法。在 Laravel 8.x 中,此属性为 null 违约。这意味着不会自动添加命名空间前缀 由拉拉维尔。

即使:

此更改仅影响新的Laravel 8.x应用程序。应用 从Laravel 7.x升级仍将具有$namespace属性 他们的路由服务提供商。

只是为了从列表中划掉这个,您的路由定义代码应如下所示。

Route::get('/home', [PagesController::class, 'getHome'])->name('home');
Route::get('/about', [PagesController::class, 'getAbout'])->name('about');
Route::get('/contact', [PagesController::class, 'getContact'])->name('contact');
Route::get('/messages', [MessagesController::class, 'getMessages'])->name('messages');
Route::post('/contact/submit', [MessagesController::class, 'submit'])->name('submit');

此外,应通过以下方式检查路由:Route::is('home')而不是Request::is('home').