Laravel Blade 视图未显示对它们所做的更改
Posted
技术标签:
【中文标题】Laravel Blade 视图未显示对它们所做的更改【英文标题】:Laravel Blade views not showing the changes made to them 【发布时间】:2014-08-23 17:09:12 【问题描述】:系统详细信息:在 64 位 Windows 中使用 WAMP2.5 mysql:5.6.17 php:5.5.12 Apache:2.4.9我通过 composer 安装 Laravel。一切都很好,因为最近我的所有视图都不再显示对它们所做的任何更改。仅使用 Blade 模板的视图会发生这种情况。
我已经正确地创建了刀片文件并用filename.blade.php
命名它们。
我的观点文件结构 - views
-layouts
defaults.blade.php
show.blade.php
login.blade.php
defaults.blade.php
<!DOCTYPE html>
<html>
<head></head>
<body>
<div>
<nav></nav>
@yield('content')
</div>
@yield('footerscripts')
</body>
</html>
show.blade.php
@extends('layouts.defaults')
@section('content')
--- SOME CONTENT ---
@stop
@section('footerscripts')
--- js scripts ---
@stop
相同的格式运行良好,但突然开始出现奇怪的行为。即使刷新多次后视图也没有改变,一旦我尝试删除视图页面内的所有内容,它仍然显示在浏览器中。 有类似的问题,但很多人没有接受答案,而且有一些评级的问题对我不起作用。我还尝试重新安装全新的 WAMP 副本,但没有帮助。它仅在我更改其名称时才有效,但如果我将其更改回原始版本,它会再次开始显示旧版本。 只有刀片模板才会发生。
【问题讨论】:
更新配置或 php.ini 中的时区可能会导致 Laravel 没有意识到刀片模板已更改。你有机会这样做吗?如果是这样,@clarkf 清除 /app/storage/views 的解决方案应该可以工作,尽管您应该只需要执行一次。 我没有更改 timeZone 但它会检查系统的时间,如果更新时间更长,那么它会更新视图?如果它像那样工作,那么肯定会导致我的系统出现问题,因为我的系统总是显示错误的时间。 【参考方案1】:如果你使用 PhpStorm:
打开菜单File → Settings
转到Deployment → Options
部分
然后取消选中Preserve files timestamps
选项
【讨论】:
【参考方案2】:我得到了非常简单的解决方案,我在两个文件夹中有相同的项目,我正在编辑一个,而 php artisan 在另一个文件夹上运行,当到达运行 php 服务器的那个项目并对其进行更改时,它就可以工作了。
【讨论】:
【参考方案3】:运行命令npm run production
或npm run dev
它解决了我的问题: 我有同样的问题,除了我的控制器方法也不想反映视图的变化。我尝试了以下命令:
user:/var/www/html/website$ php artisan cache:clear
Application cache cleared!
user:/var/www/html/website$ php artisan config:clear
Configuration cache cleared!
user:/var/www/html/website$ php artisan route:clear
Route cache cleared!
user:/var/www/html/website$ php artisan view:clear
Compiled views cleared!
没有任何改变。
我从控制器方法中回显了一个不正确的变量。纳达!
我更改了app.css?v=2
文件版本。在随后的沉默中……没有任何区别。
我清除了浏览器缓存。
我手动删除了:
bootstrap/cache/config.php
framework/sessions/*
framework/views/*
没有任何变化,最后我运行了命令npm run production
和宾果游戏!试试吧,它会为您节省 2 个半小时的挫败感和激进的想法。
Laravel/框架 v5.6
【讨论】:
【参考方案4】:-
在您的 cmd(命令提示符)或终端类型中,然后按 Enter...
php工匠视图:清除
为此,您的终端应指向您的 laravel 安装/文件夹的根目录
-
或删除文件夹中的文件
存储/框架/视图
为了避免每次重新加载时解析 Blade 文件,Laravel 设计为在 Blade 解析后缓存视图,以避免每次重新加载时重新解析刀片。
-
或者确保在正确的 Laravel 安装中编辑正确的视图。
【讨论】:
【参考方案5】:我遇到了同样的问题,原因是我正在远程上传,但是我的计算机上的时间与我的服务器上的时间不同
【讨论】:
【参考方案6】:我不确定具体情况,但这与 filemtime()
在 Windows 中的实现方式有关(可能与错误 here 相关)。
Illuminate\View\Compilers\BladeCompiler
(嗯,它是父类,Compiler
)通过检查文件的 mtime,通过调用 filemtime()
的 Illuminate\Filesystem\Filesystem
(参见 L179-188)来检查文件自上次编译以来是否已更改。显然这无法在您的系统上正确报告。
首先,确保app/storage/views
目录具有读、写和删除权限。如果这没有帮助,最简单的解决方案是在进行更改时清除 app/storage/views/
目录。
【讨论】:
如果它只是检查系统时间并仅在更新时间大于旧时间时更新视图,那么我认为这可能是我的系统时间的问题。它总是显示错误的时间可能是CMOS电池问题。但这也发生在我朋友的lappy(没有时间问题)中,但持续时间很短,一段时间后刷新视图更新。以上是关于Laravel Blade 视图未显示对它们所做的更改的主要内容,如果未能解决你的问题,请参考以下文章