Иван
Алексей
Anonymous
Anonymous
Алексей
Алексей
Давно
ну так вот повторю - СНИПЕТЫ С MODX ЭТО ФУНКЦИИ!
Иван
Алексей
Я тут как бы обучалку затеял.
Иван
Алексей
это первое.
А второе это то что файловый сниппет можно вызывать так:
{'@FILE snippets/getOptionCaption.php' | snippet}
Алексей
Алексей
код сниппета приведите еще. для полного разбора
Anonymous
Алексей
в сниппете желательно не вызывать функции. а если и вызываете, то проверять что уже такая есть.
Алексей
потому что снипет msProduct чанк вызывает столько раз сколько товаров. т.е. ваш сниппет и прочее вызываются столько же раз.
Anonymous
Просто посмотреть
Вот сниппет, который вызывается из чанка, который вызвался из сниппета msProducts
<?php
require_once $_SERVER['DOCUMENT_ROOT'] . '/ELEMENTS/SNIPPETS/test.php';
Вот сам файл test.php
<?php
return 'это тест';
И в итоге текст не выводится. Выводится пустая строка.
Алексей
ну я ж говорю....
Алексей
нафига вам прослойка - сниппет который вызывает ФАЙЛ.
Алексей
в файле вы делаете RETURN. мне кажется это хрень.
Anonymous
Я говорю, что нашел баг MODX. Вы пытаетесь меня убедить, что мне не надо так кодить))))).
Anonymous
Какая разница, что в сниппете. Вы не на то внимание сосредотачиваете. Важно то, что вместо работы сниппета вызывается пустая строка. Баг на лицо.
Anonymous
И если вытащить содержимое сниппета из файла и поместить в MODX вместо require_once, то все будет работать.
Иван
Anonymous
Или если поставить галочку, что сниппет статичный.
Anonymous
Алексей
ну MODX в принципе весь свой на уме, но просто нужно брать в расчет тот файт что у него (у MODX) свое представление о подключаемых файлах через сниппет.
Иван
Давай https://github.com/modxcms/revolution/issues/new?assignees=&labels=bug&template=bug_report.md -
Иван
Почитаю, что Марк и Джейсон ответят
Алексей
Иван
https://docs.modx.com/current/ru/extending-modx/snippets - смотрели?
Anonymous
Алексей
Обидно, что он у себя на уме, а не логичный и предсказуемый.
шош тут поделать.
а в php в функции если подключать файл и в файле указывать return, то тоже сработает? сомневаюсь.
Ведь получается функцию закрывают в подключаемом файле. Я не глубоких познаний в php, но логика подсказывает что ничего хорошего не будет.
Anonymous
Алексей
Сработает
прикольно. значит в MODX сниппеты - недофункции ))))
Павел
Павел
Мне интересно почему вообще должен работать xdebug в этом случае
Павел
Это не баг, это жизнь)
Anonymous
Anonymous
Файлы отлаживать можно. Записи в БД - нельзя.
Павел
Тегни меня пожалуйста в на алл диалога
Павел
*начало
Anonymous
Anonymous
Значит, в принципе, логично, что код не работает (если в MODX сниппеты - это функции) . Но странно, что в некоторых случаях он работает, а в некоторых - нет. Он вообще не должен работать.
Anonymous
Кто-нибудь может помочь? Я в сниппете написал:
<?php
require_once $_SERVER['DOCUMENT_ROOT'] . '/ELEMENTS/SNIPPETS/my_snippet.php';
Ставлю точку останова на первую строку в файле my_snippet.php. Она срабатывает, когда сниппет вызывается из шаблона. А когда из чанка - не срабатывает.
Если перед require_once написать "return '123';" , то срабатывать будет еще и в чанке.
Anonymous
*начало
Скинул первое сообщение про проблему.
Павел
Все ж логично
Павел
Инвокается модэкс и забирает данные с базы
Павел
Тут xdebug не сработает
Anonymous
Все ж логично
xdebug работает, если сниппет вызывается из шаблона. И не работает, если сниппет вызывается из чанка.
Anonymous
return в файле, который подключается через require_once, работает (хотя не должен - выше я попробовал сделать примеры с файлами test и test2), если сниппет вызывается из шаблона. И не работает, если сниппет вызывается из чанка.
Павел
Алексей
🙃 новые исследования.
Павел
Оно с одной стороны логично почему не работает
Алексей
Павел
Но почему работает в шаблонах
Павел
????
Павел
Штош, парень нашёл у нас багу
Anonymous
Anonymous
Это правда работает.
Павел
Попробуй
Обязательно !
В офисе с утра первое что сделаю
Павел
Я в принципе никогда не цеплял xdebug к модэкс это потому, что все в базе
Anonymous
В чанке не работает вызов сниппета:
href="{'getMyUrl' | snippet : ['id' => $id]}"
Если getMyUrl - это сниппет, в котором такой код:
require_once путь к файлу
А в файле такой код:
return "Привет".
Вместо "Привет" будет пустая строка.
Это если чанк вызывается через msProducts:
{'!msProducts' | snippet : [
...
'tpl' => '@FILE:chunks/productCard.tpl'
]}
Но если написать вызов этого сниппета в шаблоне, то все работает. Или если убрать require_once и написать код вместо него. Или если сделать сниппет статичным.
Павел
Anonymous
Сложный код в MODX )))
Плагин, например. Думаешь, Minishop2 писали и отлаживали через error.log / лог сервера?
Павел
Если же мне нужно прям внутри проекта отладить, то прыгаю по функциям, что поделать
Павел
Но я с MODX уже почти не работаю
Совсем мало
Anonymous
На что ты его променял?
Anonymous
Laravel?
Павел
А так сервисы пишу на Laravel в основном
Но есть проекты и на Symfony и на плюсах, и на Golang недавно
Anonymous
Круто) Увлеченный ты
Иван