Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Страницы 1
А как в laravel 5 правильно коментарить многосторочный код в blade-темплейтах ?
Пробовал разные способы, но код или часть его отображается...
Спасибо!
Не в сети
Не в сети
mstdmstd, видимо ты делаешь хтмл-комментарии
<!-- … --> – хтмл-комментарий, попадает в вывод
{{-- … --}} – blade-комментарий, не попадает в вывод, не работает форматирование кода внутри комментария в IDE
@if(false) … @endif – не комментарий, но не попадает в вывод, код внутри разбирается и форматируется средствами IDE
выбирай что тебе больше подходит
Не в сети
Да как раз блок
{{-- … --}}
и не срабатывает
В редакторе
http://imgur.com/a/01xid
В браузере http://imgur.com/a/PpcU2
Или это какие-то настройки ?
Изменено mstdmstd (08.06.2017 10:59:53)
Не в сети
интересное кино. не, должно именно так работать. а какое имя у файла? точно *.blade.php? или *.php? и ещё в коде нигде не вызывается Blade::setContentTags? он подменяет {{ и }} на другие, при этом тэги для комментариев также меняются
Не в сети
да это resources/views/layouts/app.blade.php - осеновной layout видов
setContentTags - в проекте не вызывается
Дополнительно установлено несколько пакетов : laravel-debugbar, migrations-generator, laravel-sluggable, laravel-enum
Не в сети
хм, попробуй найти в /storage/framework/views php-файл, который блейд-компилятор сгенерировал для этого шаблона. может он прольёт свет на то почему это так работает. и уточни установленную версию ларавеля (в composer.lock можно подсмотреть), может в конкретной версии проблема…
Не в сети
Открыл /storage/framework/views/446c52a864fefdd39a1a4e61725bbbab058145bc.php и в нем http://imgur.com/a/oMXw9
Laravel 5.4.22
в composer.lock :
"name": "laravel/framework",
"version": "v5.4.22",
и по-преженму закоментированный текст выводится на экран...
Не в сети
окей, у меня есть ещё один вариант, хотя и маловероятный. добавь в начало вида такой код:
<pre><?php var_dump(ini_get('pcre.backtrack_limit'), ini_get('pcre.recursion_limit')); die; ?>
я подозреваю что из-за размера содержимого комментария, регулярка, которая должна его преобразовывать, просто не в состоянии «захватить» его целиком – не влезает в лимиты
Не в сети
Не в сети
Использовать PHP-комментарии религия не позволяет?
использовать-то их можно, почему нет? но почему не работает – разобраться-то нужно…
Не в сети
Не в сети
php-код не должен его сбивать – там очень простая регулярка. до 5.4 коммент мог сбиваться если внутри был пхп-код с пхп-комментарием /* … */ – регулярка заменяла blade-коммент на пхп-коммент и закрытие его оказывалось не там где нужно. с 5.4 компилятор вообще удаляет из шаблона всё что между {{-- и --}} – ничего сбиваться не должно.
я ставлю на лимиты pcre
Не в сети
окей, у меня есть ещё один вариант, хотя и маловероятный. добавь в начало вида такой код:
<pre><?php var_dump(ini_get('pcre.backtrack_limit'), ini_get('pcre.recursion_limit')); die; ?>
я подозреваю что из-за размера содержимого комментария, регулярка, которая должна его преобразовывать, просто не в состоянии «захватить» его целиком – не влезает в лимиты
Вывел :
string(7) "1000000"
string(6) "100000"
И в phpinfo :
PCRE (Perl Compatible Regular Expressions) Support enabled
PCRE Library Version 8.38 2015-11-23
PCRE JIT Support enabled
Directive Local Value Master Value
pcre.backtrack_limit 1000000 1000000
pcre.jit 1 1
pcre.recursion_limit 100000 100000
Этого мало?
Не в сети
Не в сети
методом описанным выше выяснил что простенькая строка кода :
<?php echo DB::getTablePrefix() ?>
и вызывает такие проблемы.
Возможно, еще какие-то факторы?
Не в сети
вообще не должно, хотя я не проверял – может где-то и правда есть «предохранитель» чтобы пхп-тэги нельзя было в blade-конструкции заворачивать. а зачем вообще в этом месте <?php echo … ?> ? почему бы не написать просто {{ \DB:getTablePrefix() }} ? проверь, может в таком варианте комментарий нормально отрабатывает?
Не в сети
заглянут в код BladeCompiler – в общем, он не парсит шаблон целиком по большому счёту, у него на первом этапе обрабатываются @verbatim-блоки, чтобы защитить их от любой обработки, потом он использует php_tokenizer и обрабатывает только блоки типа T_INLINE_HTML. поскольку <?php … ?> «разрывает» html-блок на разные фрагменты, и эти фрагменты обрабатываются независимо друг от друга – регулярка для blade-комментариев не может захватить комментарий целиком – первый вызов видит только {{-- а второй – только --}} и на выходе – то что есть. я о такой особенности не знал, потому что обычно избегаю пхп-тэгов в шаблонах любой ценой (вполне успешно) – это не очень хорошая практика, в шаблоне должен быть только вывод данных, никакой логики. на крайний случай есть blade-тэг @php – он должен обрабатываться корректно и не ломать комментарии
Не в сети
Страницы 1