You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel视图中@if语句直接显示问题求助

解决Laravel Blade模板@语法直接显示的问题

嘿,刚入门Laravel就踩这个坑太正常啦😉,我来帮你捋清楚原因和解决办法:

问题根源

你直接在浏览器里访问了blade视图文件的物理路径(localhost/MYAPP/resources/views/welcome.blade.php),这完全跳过了Laravel的核心处理流程。Blade模板里的@语法是Laravel专属的模板引擎语法,必须经过Laravel框架解析后才能转换成正常的HTML代码,直接访问文件的话浏览器只会把它当成普通文本,自然会把@开头的代码原封不动显示出来。

解决步骤

1. 正确配置Web服务器根目录(推荐方案)

Laravel的入口文件是public/index.php,所有请求都应该通过这个文件来处理,所以需要把Web服务器的根目录指向项目的public文件夹,而不是项目根目录:

  • 打开LAMPP的Apache虚拟主机配置文件:/opt/lampp/etc/extra/httpd-vhosts.conf
  • 添加一个新的虚拟主机配置:
    <VirtualHost *:80>
        DocumentRoot "/opt/lampp/htdocs/MYAPP/public"
        ServerName myapp.test
    </VirtualHost>
    
  • 确保/opt/lampp/etc/httpd.conf中已经包含了虚拟主机配置文件(检查是否有Include etc/extra/httpd-vhosts.conf,如果被注释了就去掉注释)
  • 修改本地hosts文件:打开/etc/hosts,添加一行127.0.0.1 myapp.test
  • 重启LAMPP服务:/opt/lampp/lampp restart(尽量别用sudo启动,避免后续权限问题)
  • 现在访问http://myapp.test就能正常看到解析后的welcome页面了

2. 临时方案:通过public目录访问路由

如果暂时不想配置虚拟主机,也可以通过项目的public目录访问:

  • 打开项目的routes/web.php,确保已经有默认路由(新安装的Laravel一般自带):
    Route::get('/', function () {
        return view('welcome');
    });
    
  • 在浏览器访问http://localhost/MYAPP/public,这时候请求会经过Laravel的入口文件,框架会自动解析Blade模板,@语法就不会直接显示了

3. 额外注意:修复文件权限问题

如果后续碰到文件读写权限报错,可以调整项目目录的权限:

sudo chown -R $USER:www-data /opt/lampp/htdocs/MYAPP

这样既能保证Apache服务器有权访问文件,你也能正常修改项目内容。

内容的提问来源于stack exchange,提问作者MDJ

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 09:19:04