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
相关产品推荐
相关产品推荐

