在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')
.