#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:
-
открыть меню
File → Settings
-
перейдите в
Deployment → Options
раздел -
затем снимите флажок
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:
- В вашем cmd (командной строке) или терминале введите и нажмите enter… просмотр php artisan: очистить
Чтобы это сработало, ваш терминал должен быть указан на корневой каталог вашей установочной папки laravel
- Или удалите файлы в папке storage / framework /views
Чтобы избежать синтаксического анализа блейд-файлов при каждой перезагрузке, Laravel предназначен для кэширования просмотров после анализа блейда, чтобы избежать повторного анализа блейдов при каждой перезагрузке.
- Или убедитесь, что вы редактируете правильный вид в правильной установке 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. Это решило проблему для меня.