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 productionnpm 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 视图未显示对它们所做的更改的主要内容,如果未能解决你的问题,请参考以下文章

更改不会反映在 laravel 视图中

使用 laravel Blade 嵌套视图

未定义变量:Blade Laravel 7.x中的横幅

视图laravel内部未定义的变量

Laravel 8.65 验证错误消息和旧值未显示在 Blade 文件中

请教laravel view 怎么显示 controller 中传递的对象值