Сохранение данных в QuickForms

prural

Новичок
Сохранение данных в QuickForms

Начал использовать QuickForms, но столкнулся с такой проблемой: если пользователь засубмител данные и форма отрисовывается снова, то поля в ней уже заполнены предыдущими данными. А хотелось бы чтобы они были пустыми.

Причем форме пофиг на SetDefaults, я пробовал очистить поля с помошью SetDefaults - не получается. Смотрел и исходники QF, один фиг ничего не понял.

Может ктото сталкивался с подобной проблемой?
 

crocodile2u

http://vbolshov.org.ru
если данные от пользователя пришли валидные, обработчик их принял и сделал с ним все, что нужно - делай редирект на ту же самую страницу.
 

prural

Новичок
Автор оригинала: magic
Вы двери в свой дом/картиру обычно ключом открываете или ломиком? Сначала нужно смотреть документацию, а не исходники. :)

http://pear.php.net/manual/en/package.html.html-quickform.intro-faq.php#AEN52212
Я смотрел эту документацию но ничего не понял. Подскажите пожалуйста, что всетаки надо сделать. Очень прошу.

-~{}~ 25.08.06 08:57:

Сделал пока через редирект, но имхо это криво. Может кто подскажет как отключить сохранение через сам QuickForm
 

crocodile2u

http://vbolshov.org.ru
prural
Ну конечно, это криво. Для всего мира прямо, а для тебя криво.

magic
И что смотреть по ссылке, которую ты дал?
 

prural

Новичок
Автор оригинала: Фанат
prural
а что у тебя за форма такая, интересно?
Просто в CMS есть форма добавления данных какогонить модуля, например новостей. И хочется чтобы когда юзер добавил данные ему высветилась новая пустая форма для добавления новой записи. А высвечивается уже заполненная
 

Фанат

oncle terrible
Команда форума
понятно.
так вот запомни. редирект надо всегда делать после отправки формы методом POST. вообще всегда. независимо от твоей возни с QuickForm.
 

prural

Новичок
Автор оригинала: Фанат
понятно.
так вот запомни. редирект надо всегда делать после отправки формы методом POST. вообще всегда. независимо от твоей возни с QuickForm.
Типа для того чтобы юзер, обновив страницу, не получил еще одну запись, идентичную предыдущей?
 

magic

lancer
crocodile2u & Фанат
Вы наверное не поняли вопроса.

У Quick_Form есть одна фича или баг (кому как нравится). После отсылки формы, с дальнейшим путешествием по сайту и возврате на страницу - QuickForm иногда восстаналивает предыдущие данные. Принудительный SetDefaults и редиректы тут не помогут. Нужно использовать параметр $trackSubmit, о чем и написано в документации.
boolean $trackSubmit
(optional) Whether to track if the form was submitted by adding a special hidden field. If the name of such field is not present in the $_GET or $_POST values, the form will be considered as not submitted.
 

magic

lancer
В чистом QuickForm сессий нет. ХЗ где она их сохраняет, спроси у спирита.

Может на нее погода влияет или какой-нибудь Auth или HTML_QuickForm_Controller. Но это восстановление данных можно выключить через trackSubmit.
 

Фанат

oncle terrible
Команда форума
мне не надо никого спрашивать. у меня своя голова на плечах имеется.
я не верю в погоду и бабушкины сказки.
я могу поверить только в кэширование на стороне клиента.
но в этом случае никакой серверной директивой trackSubmit сделать ничего нельзя
 

magic

lancer
Это не серверная директива, а параметр конструктора.

Особо одаренные могут открыть исходники и посмотреть на функциональность.
 

Фанат

oncle terrible
Команда форума
мля.
ты, вроде, мне адекватным раньше казался. русский язык, во всяком случае понимал...
впрочем, кажется, это солнечная актичность сегодня такая. влияет на умы.
выздоравливай
 

magic

lancer
Дело в том, что данные восстанавливаются на стороне сервера - в HTML четко прописываются values. Более того, если товарищ prural повесит на форму несколько правил, то при заходе на страницу сработает валидатор.
 

Фанат

oncle terrible
Команда форума
описанная тобой ситуация может произойти только при использовании метода GET.
При этом, количество случаев, когда после использования метода GET надо обязательно очищать форму, можно пересчитать по пальцам.

НЕ ГОВОРЯ УЖЕ О ТОМ что у чувака явный метод POST.
и откуда, в таком случае, в твоём валидаторе-шмалидаоре возьмутся данные - для меня большой вопрос!
 

Sad Spirit

мизантроп (Старожил PHPClub)
Команда форума
Автор оригинала: magic
crocodile2u & Фанат
Вы наверное не поняли вопроса.

У Quick_Form есть одна фича или баг (кому как нравится). После отсылки формы, с дальнейшим путешествием по сайту и возврате на страницу - QuickForm иногда восстаналивает предыдущие данные. Принудительный SetDefaults и редиректы тут не помогут. Нужно использовать параметр $trackSubmit, о чем и написано в документации.
magic, не пори х--ни. Нигде никакого волшебного сохранения не происходит. Как правильно понял Фанат, фраза из FAQ, которую ты тут процитировал, относится к случаю, когда на страницу с формой типа GET переходят с GET параметрами, и тогда надо различать состояние "просто перешли" и "отправили форму", либо когда на странице > 1 формы (как GET, так и POST) и надо различать, какую из них отправили.

В любом случае, если $trackSubmit не использовать, никакого волшебного восстановления данных не будет, а просто вылезут ошибки проверки формы.

На исходный вопрос Фанат уже ответил --- надо делать redirect.
 
Сверху