Помогите с логикой :( pdopage и formit
Всем привет! Немного запуталась. У меня есть форма на formit, которая отправляет пользовательские данные в базу (создана отдельная таблица). Пользователь входит через Login. Суть вопроса в чем. Я хочу эту форму также заполнять placeholder, которые вытаскиваются из базы, если они там есть и тем самым позволять пользователю изменить или отредактировать данные. Эти плейсхолдеры я получаю через pdopage. Введенные раньше данные показываются и редактируются хорошо.
Но! Если данных в базе еще нет, то естественно pdopage не работает и форма не выводится…
[[!pdoPage?
&class=`Class`
&element=`getClass`
&tpl=`Form.full`
&where=`{«created_by»:[[!+modx.user.id]]}`
]]
Form.full — это чанк с выводом формы. Не знаю как сделать такую логику — чтобы если пользователь вошел на сайт и у него нет данных, он бы в форме мог их заполнить и отправить, или если же уже есть данные, то они соответственно будут сразу выводиться в форме… Думала, может быть в formit надо сделать какой то прехук, который будет или выводить пустую форму или отрабатывать pdopage. Но кажется, что решение есть проще… Спасибо всем!
Но! Если данных в базе еще нет, то естественно pdopage не работает и форма не выводится…
[[!pdoPage?
&class=`Class`
&element=`getClass`
&tpl=`Form.full`
&where=`{«created_by»:[[!+modx.user.id]]}`
]]
Form.full — это чанк с выводом формы. Не знаю как сделать такую логику — чтобы если пользователь вошел на сайт и у него нет данных, он бы в форме мог их заполнить и отправить, или если же уже есть данные, то они соответственно будут сразу выводиться в форме… Думала, может быть в formit надо сделать какой то прехук, который будет или выводить пустую форму или отрабатывать pdopage. Но кажется, что решение есть проще… Спасибо всем!
Комментарии: 10
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
Но мне кажется, что задачу я плохо сформулировала. Как раз редактирование в форме у меня работает хорошо. Суть в том, что если у меня нет записи в базе данных у какого-то пользователя, то pdopage у которого вызов в чанке формы заполнения-редактирования не срабатывает, то есть не выводит просто форму. С редактированием то все хорошо, вопрос именно в первом наполнении. Я сейчас пробую разобраться с фильтрами ввода-вывода. Думаю, что например условие — если то pdopage иначе просто вывод пустой формы для заполнения. Даже не знаю в верном ли направлении думаю. :(
Смотрите вот у меня как.
1. Formit для введения пользовательских данных. Она же должна редактировать данные, если они уже есть.
2. Перед вызовом формы есть сниппет getMuzei который вбивает пользовательские данные
3. В самой форме есть вызов сниппета, который редактирует, обновляет или добавляет данные.
Я вижу, что хожу вокруг и около и мне не хватает какой-то мелочи, которая будет очень и очень смешно. Может быть мне достаточно на форму сделать ссылку какую-то, которая передаст id пользователя? Не знаю:( Суть проблемы в том, что пользователь входит в свой кабинет и может открыть форму для добавления данных. НО если у него уже есть данные, то они должны отображаться в форме. А если нет данных, то он может их ввести. Я так понимаю, что нам надо проверить есть ли у пользователя данные в базе и если нет, то просто показать пустую форму, иначе вывести их. Что мне делать? :(
Сначала, скажу спасибо большое всем, особенно Илье Уткину. Не ожидала такой поддержки. Все таки, паника, дело плохое.
Не уверена, что решение кошерное, но работает. Быть может кто-то еще советы даст.
Проблема заключалась в том, что у меня в меню не было нормальной ссылки в которой бы передавались параметры полученного объекта.
Вопрос решила так: написала свой небольшой сниппет, который передает параметры зарегистрированного пользователя в ссылку и она ведет на форму, где заполняются плейсхолдеры, по приведенному выше мною коду. Если у пользователя нет данных, то ссылка, конечно, пустая.
Код вызова ссылки, ведущей на форму, со сниппетом
Сам сниппет urlMuzei, получающий объект
Может кому из таких же новичков, как я, пригодится. Решение наивное может быть… Но вроде работает. Надо курить мануалы и долго думать :)