2016-05-05 3 views
6

В моем текущем проекте ZF2 у меня есть комплекс Form с несколькими уровнями вложенных Fieldset s, которые отражают структуру объектов, которые будут сохранены в фоновом режиме. В настоящее время данные отправляются непосредственно в Controller и сохраняются в базе данных, если они действительны.Как реализовать страницу предварительного просмотра формы в Zend Framework 2?

Теперь должен быть реализован промежуточный шаг: пользователь должен получить возможность проверить входные данные до их сохранения в базе данных. Если он решает, что это правильно, данные формы должны быть представлены и сохранены в базе данных; если пользователь решает, что форма должна быть отредактирована, он должен иметь возможность вернуться к форме и исправить ее. (Конечно, все это в цикле, пока пользователь не доволен формой и не отправит его.)

Это означает, что необходима страница предварительного просмотра. Эта страница/action должна получать данные и отображать их как-то (в виде таблицы или же). Данные необходимо временно хранить и быть готовыми к «гидратации» к объекту Form и сохранены. Если пользователь хочет обновить форму, форма должна быть восстановлена.

Как я могу реализовать это требование?

UPDATE

Я ищу для серверного решения. Предварительный просмотр должен быть новой страницей, а не HTML-версией JavScript/клиентской стороны на той же странице (для отслеживания и других целей).

+0

Невозможно выполнить сериализацию объектов и сохранить их в сеансе. Затем un-serailize объекты, чтобы сохранить их в базе данных после того, как пользователь принял их данные. – Garry

+0

Какой у вас объект? 'Form'? А где хранить - в сеансе? – automatix

ответ

0

Я бы сказал, что лучшим решением будет реализация клиентского одностороннего (java-) скрипта, который выполняется перед выполнением запроса формы POST. Вы можете поймать событие отправки формы и отобразить представление на стороне клиента, в котором вы показываете текущее состояние всех полей формы (имя и значение). Если пользователь нажимает accept, вы продолжаете операцию POST. Если пользователь нажимает кнопку «Отменить», вы возвращаетесь к виду формы, где вы допускаете дополнительные изменения, и все это повторяется.

Это не должно быть трудно найти примеры того, как это сделать ...

Одним из примеров является this blog post, но есть еще много, чтобы найти с the help of Google.

+0

Спасибо за ваш ответ! Ну, теоретически это сработает, но при таком подходе мне нужно будет дублировать всю реализованную на стороне сервера логику проверки, повторную ее в JavaScript. – automatix

+0

Вы писали: * «Пользователь должен получить возможность проверить входные данные до его отправки на сервер, если он решает, правильно, форма должна быть отправлена ​​и сохранена в базе данных« * », и это возможно без добавления любая проверка: 1) пользователь проверяет свой ввод. 2) когда пользователь считает, что все в порядке, вы все равно можете позволить серверу выполнять свою работу и проверять. Но если вы хотите, чтобы сервер проверял перед пользователем, вы действительно могли бы написать аналогичный код для проверки на клиенте. Это было бы более эффективно, чем позволить серверу выполнять всю работу над каждой попыткой.Проверка html5 может быть полезна. – Wilt

+0

@automatix [Есть некоторые модули для ZF2] (https://www.google.se/search?q=zf2%20client%20side%20validation), которые могут помочь вам интегрировать проверку на стороне клиента в вашем проекте. У меня нет опыта из первых рук, но, возможно, стоит попробовать. – Wilt

0

Поскольку я не знаю, как структурировано ваше приложение/db, я могу только предположить, что вы могли бы создать другую таблицу, в которой будут храниться временные данные или после того, как пользователь отправит форму, и она будет проверена вместо сохранения ее в db make все поля доступны только для чтения и заменяют исходную кнопку отправки тем, который сохранит данные, и тот, который вернет пользователя в форму, где он может изменить данные.

Смежные вопросы