Laravel中使用route('name')关联blade文件时a标签失效问题
问题原因及解决办法
核心问题
你直接在浏览器中打开layouts/test.blade.php是静态访问本地文件,没有经过Laravel应用的服务器处理,导致Blade模板里的route()辅助函数生成的URL无法被Laravel路由系统解析,自然会返回404 Not Found。
解决步骤
启动Laravel内置服务器
在项目根目录的终端中运行:php artisan serve这会启动一个本地服务器,默认地址是
http://localhost:8000。给test页面添加路由
你目前只给contact页面配置了路由,layouts/test.blade.php也需要对应的路由才能通过Laravel访问。在web.php中添加:Route::get('test', function () { return view('layouts.test'); })->name('test');通过服务器访问test页面
在浏览器中打开http://localhost:8000/test,此时页面里的{{ route('contact') }}会被正确解析为http://localhost:8000/contact,点击链接就能正常访问contact页面了。
额外说明
- Blade模板中的
route()、asset()等辅助函数,只有在Laravel应用的运行环境下才能正确解析,直接打开本地.blade.php文件时,浏览器只会把它当成普通HTML,无法解析Laravel的模板语法和路由逻辑。 - 你的contact路由和视图路径是正确的,只要通过Laravel服务器访问,就能正常工作。
内容的提问来源于stack exchange,提问作者Saghar
相关产品推荐
相关产品推荐

