Во-первых, позвольте мне сказать, что я нахожу интерфейс формы sfFormPropel несовместимым.Существует bind()
, который ничего не возвращает, но запускает проверку, save()
, который возвращает сохраненный объект, и bindAndSave()
, который возвращает логическое значение, фактически возвращаемое значение isValid()
.Теперь у меня есть работающее приложение, но я не чувствую, что код правильный, и я совершенно новичок в symfony
, поэтому, возможно, я что-то упускаю.
Объект, который мне нужно создатьнужны некоторые внешние свойства, которые не представлены в форме, являются внешними по отношению к модели и обрабатываются приложением (например, userId пользователя, который создал сущность, guid, сгенерированный извне и т. д.).
Прямо сейчас поток выглядит следующим образом:
- получить значения из запроса и связать их с формой
- проверить, является ли форма действительной
- , еслиэто допустимо, добавьте дополнительные значения и свяжите их, чтобы сформировать еще раз
- сохранить форму и вернуть объект
Очевидный ответ - добавить значения, специфичные для приложения,извлекается из запроса, но Не имеет смысла связывать специфичные для приложения значения, если форма недопустима, поскольку они могут быть потенциально дорогостоящими операциями, могут создавать записи в базе данных и т. д. Кроме того, это не должноможно передать эти значения с помощью запроса post, они должны поступать только из приложения.
Теперь я решил, что модель должна выполнять эти функции, но поскольку данные являются внешними по отношению к модели, действиееще нужно передать его модели.Проблема в том, что если я позвоню $form->getObject()
после bind()
, у него останутся старые данные, а не отправленные данные.
Как правильно реализовать этот вид постобработки?
Вторая награда начата, чтобы наградить другого ценного ответа