Блочные представления Laravel, в которых не отображаются внесенные в них изменения

#laravel #templates #laravel-4 #blade

#laravel #шаблоны #laravel-4 #laravel-blade

Вопрос:

Сведения о системе: Используя WAMP2.5 в 64-разрядной версии Windows,
MYSQL: 5.6.17
PHP: 5.5.12
Apache: 2.4.9
, я установил laravel с помощью установки composer. Все было в порядке, поскольку недавно все мои представления перестали показывать какие-либо изменения, внесенные в них. Это происходит с представлениями, которые используют только блочный шаблон.

Я правильно создал блейд-файлы и назвал их с помощью 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, но безрезультатно.Это работает, только если я изменю его название, но если я верну его к исходному, он снова начнет показывать старую версию.
Происходит только с шаблоном блейда.

Комментарии:

1. Обновление часового пояса в вашей конфигурации или в php.ini может привести к тому, что Laravel не поймет, что блейд-шаблоны изменились. Есть шанс, что вы это сделали? Если это так, решение @ clarkf по очистке / app / storage / views должно сработать, хотя вам нужно будет сделать это только один раз.

2. Я не менял часовой пояс, но проверяет ли это системное время, и если время обновления больше, то оно обновляет представление? Если это работает таким образом, то, конечно, это вызовет проблему в моей системе, потому что моя система всегда показывает неправильное время.

Ответ №1:

Если вы используете PhpStorm:

  1. открыть меню File → Settings

  2. перейдите в Deployment → Options раздел

  3. затем снимите флажок Preserve files timestamps с опции

Ответ №2:

Я не уверен в деталях, но это связано с тем, как filemtime() реализовано в Windows (возможно, связанная ошибка здесь).

IlluminateViewCompilersBladeCompiler (ну, это родительский класс, Compiler ) проверяет, изменился ли файл с момента последней компиляции, проверяя его mtime, через IlluminateFilesystemFilesystem который вызывает calls filemtime() (см. L179-188). Очевидно, что в вашей системе не удается должным образом сообщить об этом.

Во-первых, убедитесь, что app/storage/views каталог имеет разрешения на чтение, запись и удаление. Если это не помогает, самым простым решением было бы очищать app/storage/views/ каталог при каждом внесении изменений.

Комментарии:

1. Если он просто проверяет системное время и обновляет представление только тогда, когда время обновления было больше старого, то я думаю, что, вероятно, это проблема моего системного времени. Это всегда показывает неправильное время, возможно, проблема с батареей CMOS. Но это также произошло в lappy моего друга (у которого нет проблем со временем), но это продолжалось недолго, через некоторое время, когда он обновил представление, было обновлено.

Ответ №3:

У меня была такая же проблема, причина заключалась в том, что я выполняю удаленную загрузку, но время на моем компьютере отличалось от того, которое было на моем сервере

Ответ №4:

Я получил очень простое решение, у меня был один и тот же проект в двух папках, я редактировал одну, а php artisan был запущен в другой, когда добирался до того проекта, где в нем был запущен php-сервер, и вносил изменения, он работал.

Ответ №5:

  1. В вашем cmd (командной строке) или терминале введите и нажмите enter… просмотр php artisan: очистить

Чтобы это сработало, ваш терминал должен быть указан на корневой каталог вашей установочной папки laravel

  1. Или удалите файлы в папке storage / framework /views

Чтобы избежать синтаксического анализа блейд-файлов при каждой перезагрузке, Laravel предназначен для кэширования просмотров после анализа блейда, чтобы избежать повторного анализа блейдов при каждой перезагрузке.

  1. Или убедитесь, что вы редактируете правильный вид в правильной установке Laravel.

Ответ №6:

Запустите команду 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!
  

Ничего не изменилось.

Я повторил неверную переменную из метода контроллера. Nada!

Я изменил app.css?v=2 версию файла. В тишине, которая последовала после… разницы не было.

Я очистил кэш своего браузера.

Я вручную удалил: bootstrap/cache/config.php
framework/sessions/*
framework/views/*

Никаких изменений, и, наконец, я запустил команду npm run production и бинго! Попробуйте, это сэкономит вам 2 с половиной часа разочарований и радикальных размышлений.

Laravel / framework v5.6

Ответ №7:

Очистите кэш и перезапустите php-fpm. Это решило проблему для меня.