Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 06.06.2017 19:11:11

коментарить многосторочный код в blade-темплейтах ?

А как в laravel 5 правильно коментарить многосторочный код в blade-темплейтах ?
Пробовал разные способы, но код или часть его отображается...


Спасибо!

Не в сети

#2 06.06.2017 19:13:29

Re: коментарить многосторочный код в blade-темплейтах ?

Да хотя бы так:

PHP
<?/*
коммент-
арий
*/?>

Не в сети

#3 07.06.2017 09:35:37

Re: коментарить многосторочный код в blade-темплейтах ?

mstdmstd, видимо ты делаешь хтмл-комментарии

<!-- … --> – хтмл-комментарий, попадает в вывод
{{-- … --}} – blade-комментарий, не попадает в вывод, не работает форматирование кода внутри комментария в IDE
@if(false) … @endif – не комментарий, но не попадает в вывод, код внутри разбирается и форматируется средствами IDE

выбирай что тебе больше подходит

Не в сети

#4 08.06.2017 10:58:56

Re: коментарить многосторочный код в blade-темплейтах ?

Да как раз блок

{{-- … --}}

и не срабатывает
В редакторе
http://imgur.com/a/01xid
В браузере http://imgur.com/a/PpcU2
Или это какие-то настройки ?

Изменено mstdmstd (08.06.2017 10:59:53)

Не в сети

#5 08.06.2017 13:59:39

Re: коментарить многосторочный код в blade-темплейтах ?

интересное кино. не, должно именно так работать. а какое имя у файла? точно *.blade.php? или *.php? и ещё в коде нигде не вызывается Blade::setContentTags? он подменяет {{ и }} на другие, при этом тэги для комментариев также меняются

Не в сети

#6 08.06.2017 18:40:24

Re: коментарить многосторочный код в blade-темплейтах ?

да это resources/views/layouts/app.blade.php - осеновной  layout видов
setContentTags -  в проекте не вызывается
Дополнительно установлено несколько пакетов : laravel-debugbar, migrations-generator, laravel-sluggable, laravel-enum

Не в сети

#7 08.06.2017 20:11:49

Re: коментарить многосторочный код в blade-темплейтах ?

хм, попробуй найти в /storage/framework/views php-файл, который блейд-компилятор сгенерировал для этого шаблона. может он прольёт свет на то почему это так работает. и уточни установленную версию ларавеля (в composer.lock можно подсмотреть), может в конкретной версии проблема…

Не в сети

#8 17.06.2017 17:56:02

Re: коментарить многосторочный код в blade-темплейтах ?

Открыл /storage/framework/views/446c52a864fefdd39a1a4e61725bbbab058145bc.php и в нем http://imgur.com/a/oMXw9
Laravel 5.4.22
в composer.lock :

          "name": "laravel/framework",
            "version": "v5.4.22", 

           
и по-преженму закоментированный текст выводится на экран...

Не в сети

#9 18.06.2017 09:02:05

Re: коментарить многосторочный код в blade-темплейтах ?

окей, у меня есть ещё один вариант, хотя и маловероятный. добавь в начало вида такой код:

<pre><?php var_dump(ini_get('pcre.backtrack_limit'), ini_get('pcre.recursion_limit')); die; ?>

я подозреваю что из-за размера содержимого комментария, регулярка, которая должна его преобразовывать, просто не в состоянии «захватить» его целиком – не влезает в лимиты

Не в сети

#10 18.06.2017 23:30:03

Re: коментарить многосторочный код в blade-темплейтах ?

Использовать PHP-комментарии религия не позволяет?

Не в сети

#11 19.06.2017 05:12:19

Re: коментарить многосторочный код в blade-темплейтах ?

Proger_XP пишет:

Использовать PHP-комментарии религия не позволяет?

использовать-то их можно, почему нет? но почему не работает – разобраться-то нужно…

Не в сети

#12 19.06.2017 11:24:20

Re: коментарить многосторочный код в blade-темплейтах ?

Чтобы разобраться нужно просто удалять части комментария, пока он не начнёт обрабатываться. Скорее всего Blade сбивает либо PHP-код внутри комментария, либо какие-то теги, либо действительно лимит в PCRE (зависит от того, какое выражение используется в Blade). Подозреваю первое.

Не в сети

#13 19.06.2017 14:23:50

Re: коментарить многосторочный код в blade-темплейтах ?

php-код не должен его сбивать – там очень простая регулярка. до 5.4 коммент мог сбиваться если внутри был пхп-код с пхп-комментарием /* … */ – регулярка заменяла blade-коммент на пхп-коммент и закрытие его оказывалось не там где нужно. с 5.4 компилятор вообще удаляет из шаблона всё что между {{-- и --}} – ничего сбиваться не должно.

я ставлю на лимиты pcre smile

Не в сети

#14 19.06.2017 17:42:44

Re: коментарить многосторочный код в blade-темплейтах ?

constb пишет:

окей, у меня есть ещё один вариант, хотя и маловероятный. добавь в начало вида такой код:

<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

Этого мало?

Не в сети

#15 19.06.2017 17:51:16

Re: коментарить многосторочный код в blade-темплейтах ?

Да что гадать — тупо удаляйте половину комментария, потом еще половину, потом еще одну пока он не заработает. Как заработал — удаляйте вторую половину аналогично, пока он не сломается опять.

Не в сети

#16 19.06.2017 18:05:26

Re: коментарить многосторочный код в blade-темплейтах ?

методом описанным выше выяснил что простенькая строка кода :

<?php echo DB::getTablePrefix() ?>

и вызывает такие проблемы.
Возможно, еще какие-то факторы?

Не в сети

#17 20.06.2017 07:28:26

Re: коментарить многосторочный код в blade-темплейтах ?

вообще не должно, хотя я не проверял – может где-то и правда есть «предохранитель» чтобы пхп-тэги нельзя было в blade-конструкции заворачивать. а зачем вообще в этом месте <?php echo … ?> ? почему бы не написать просто {{ \DB:getTablePrefix() }} ? проверь, может в таком варианте комментарий нормально отрабатывает?

Не в сети

#18 20.06.2017 07:36:21

Re: коментарить многосторочный код в blade-темплейтах ?

заглянут в код BladeCompiler – в общем, он не парсит шаблон целиком по большому счёту, у него на первом этапе обрабатываются @verbatim-блоки, чтобы защитить их от любой обработки, потом он использует php_tokenizer и обрабатывает только блоки типа T_INLINE_HTML. поскольку <?php … ?> «разрывает» html-блок на разные фрагменты, и эти фрагменты обрабатываются независимо друг от друга – регулярка для blade-комментариев не может захватить комментарий целиком – первый вызов видит только {{-- а второй – только --}} и на выходе – то что есть. я о такой особенности не знал, потому что обычно избегаю пхп-тэгов в шаблонах любой ценой (вполне успешно) – это не очень хорошая практика, в шаблоне должен быть только вывод данных, никакой логики. на крайний случай есть blade-тэг @php – он должен обрабатываться корректно и не ломать комментарии

Не в сети

Подвал раздела