记录一次有关VIEW的坑

laravel |1年前 |0

laravel


最近公司 APP IOS 端审核通不过,对一些H5界面修改,但是不能影响到Android端,所以使用了 laravel-mobile-detect 这个包,在 view 端区分客户端。

起初我使用的是 jenssegers/agent 这个包,但是这个包没有提供 blade 的支持,所以后面改用了 laravel-mobile-detect,本地测试完成之后,就上传到服务器。然而,服务器上的代码没有达到预期的效果,laravel blade 的语法没有被编译成相应的PHP代码,而是直接在页面输出了 @android @endandroid 类似这样的代码,查了很久都没找到原因。代码也不可能错啊,因为页面上确实输出了 blade 的语法代码。 composer install 也执行了,在依赖包中是有 laravel-mobile-detect 的代码存在的。于是乎想到是否跟服务器配置有关,因为服务器是我自己编译安装的运行环境,可能跟 laravel 官方推荐使用的虚拟环境 homestead 存在差异,于是对比了下,一系列操作之后,还是没有用。最后面想到,是否跟编译好的 view 有关?于是查看编译好的 view 视图代码,但是由于都是 MD5 命名的视图文件,很难找,于是我执行 php artisan view:clear 删除了所有编译好的 view 文件,然后去刷新界面,重新生成这些视图,此时,代码竟然起作用了,也没有输出了 @android @endandroid 这样的代码了,是确确实实的起作用了。

这是为什么?为什么之前的 blade 语法没有被编译成 PHP 相应的代码呢?后面删除 view 重新刷新,确被编译了。后面突然想到,我是在执行 composer install 之前就已经刷新这个页面了,此时由于 laravel-mobile-detect 这个包还没有引用,之前的页面确实没有被编译。

也许是新年刚刚过完,脑袋还晕乎乎的,这么简单的问题,弄了我一个下午。作为一个使用了几年 laravel 的老司机,惭愧啊。

MeiWJ
A PHP Web Artisan

完善源自用心 細節決定成敗