Через pdoResources не выводится плейсхолдер
Друзья, прошу помощи! Как в pdoResources через чанк вывести значение заранее заполненного плейсхолдера? На данный момент вместо значения плейсхолдера выводится его текстовая запись в примерно таком виде
Вообще хочу сделать прайс/онлайн-калькулятор товаров или услуг в виде формы, где через pdoResources будут выводиться товары или услуги по строкам с возможностью заказа выбранных услуг, при этом пользователь предварительно сможет подсчитать стоимость заказа.
У товара/услуги в строке будут отображаться:
Таким образом, пользователь сможет сформировать заказ нужных товаров/услуг, и вся информация по заказу (выбранные позиции, их количество и расчет стоимости заказа) уйдет на почту администратору сайта и пользователю, сформировавшему заявку.
Пока сделал форму заказа без расчета стоимостей, где через pdoResources вывел товары/услуги. Для отправки использую FormIt + AjaxForm. Параметр name у инпутов зависит от id ресурса.
В чанке sentEmailTpl, формирующем отправляемое письмо с заказом, также через pdoResources вывожу данные заказа с помощью чанка
Запись
Вполне вероятно, что я неправильно вывожу плейсхолдер через сниппет. Буду рад любой помощи!
[[+nn7]]
, где последняя цифра зависит от id ресурса. Т.е. получается, что плейсхолдер не обрабатывается в pdoResources, вместо его значения выводится текст, задающий сам плейсхолдер.Вообще хочу сделать прайс/онлайн-калькулятор товаров или услуг в виде формы, где через pdoResources будут выводиться товары или услуги по строкам с возможностью заказа выбранных услуг, при этом пользователь предварительно сможет подсчитать стоимость заказа.
У товара/услуги в строке будут отображаться:
- название
- стоимость
- возможно какие-то дополнительные данные из дополнительных полей соответствующих ресурсов (картинка-привью, наличие и пр.) по необходимости
- и будет input, где пользователь сможет указать количество единиц товара/услуги для заказа
Таким образом, пользователь сможет сформировать заказ нужных товаров/услуг, и вся информация по заказу (выбранные позиции, их количество и расчет стоимости заказа) уйдет на почту администратору сайта и пользователю, сформировавшему заявку.
Пока сделал форму заказа без расчета стоимостей, где через pdoResources вывел товары/услуги. Для отправки использую FormIt + AjaxForm. Параметр name у инпутов зависит от id ресурса.
В чанке sentEmailTpl, формирующем отправляемое письмо с заказом, также через pdoResources вывожу данные заказа с помощью чанка
[[#[[+id]].pagetitle]]: количество - [[+nn[[#[[+id]].id]]]], цена - [[#[[+id]].cena]] рублей
При этом название товара и стоимость в заказе приходят правильные, чего не скажешь про указанное количество.Запись
[[+nn[[#[[+id]].id]]]]
должна формировать плейсхолдер количества товара/услуги, передаваемый из формы для дальнейшей отправки. Но как я писал выше, эта запись выводит не значение плейсхолдера[[+nn7]]
, а его текстовую запись. Т.е. если в форме заказа я укажу для элемента с id=7 какое-то числовое значение, то в заказе в письме вместо этого числового значения отображается не введенное число, а текст [[+nn7]]
Причем если в чанке sentEmailTpl, формирующем отправляемое письмо с заказом, выводить данные заказа не через pdoResources а вручную для каждого отдельного товара/услуги в виде[[#7.pagetitle]]: - количество - [[+nn[[#7.id]]]], цена - [[#7.cena]] рублей
, то запись [[+nn[[#7.id]]]]
которая формирует плейсхолдер [[+nn7]]
отрабатывает нормально и отправляет в письме введенное в инпут значение.Вполне вероятно, что я неправильно вывожу плейсхолдер через сниппет. Буду рад любой помощи!
Комментарии: 5
Каким образом задается плейсхолдер?
Желательно с примерами кода.
Желательно с примерами кода.
На сколько я понимаю, при использовании AjaxForm плейсхолдеры сами формируются исходя из параметров name тегов input и заполняются автоматически теми значениями, что были введены пользователем в форме (если инпуты не заполнялись, то плейсхолдеры пустые).
Например, если в чанке форме мы делаем поле
При этом в чанке sentEmailTpl, формирующем отправляемое письмо, для отправки заполненного поля email мы пишем:
Например, если в чанке форме мы делаем поле
<input type="text" class="form-control" name="email" id="af_email" value="">
, то плейсхолдер [[+email]] сам создается автоматически (из параметра name поля) и заполняется введенным значением в соответствующий input. При этом в чанке sentEmailTpl, формирующем отправляемое письмо, для отправки заполненного поля email мы пишем:
Email: [[+email]]
Т.е. плейсхолдеры создаются и заполняются автоматически. Как-то специально я их не заполняю.
Есть предположение, что сниппет отрабатывает раньше, чем плейсхолдеры инициализируются. Поэтому вместо значения сниппета выводится сам текст, сниппет задающий.
Но так ли это, я понятия не имею ) А быть может, плейсхолдеры в сниппетах надо выводить как-то особым образом…
Но так ли это, я понятия не имею ) А быть может, плейсхолдеры в сниппетах надо выводить как-то особым образом…
А если просто записать в шаблоне [[+nn7]] что-то выводится?
Если просто записать в шаблоне [[+nn7]], то на странице сайта ничего не выводится (пустое место), т.к. на момент загрузки страницы форма еще не заполнена, следовательно плейсхолдер [[+nn7]] и ему подобные еще не сформированы. А отправляется форма через Ajax компонентом AjaxForm. Следовательно страница не перезагружается. В общем, на момент загрузки страницы этому плейсхолдеру неоткуда взяться, чтобы он выводился в шаблоне.
Быть может, в чанке sentEmailTpl, формирующем отправляемое письмо, сниппет pdoResources отрабатывает еще до того, как он вызывается через AjaxForm? Тогда получается, что плейсхолдеры еще не были сформированы…
Быть может, в чанке sentEmailTpl, формирующем отправляемое письмо, сниппет pdoResources отрабатывает еще до того, как он вызывается через AjaxForm? Тогда получается, что плейсхолдеры еще не были сформированы…
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.