обновить / проверить встроенные формы перед сохранением в symfony - PullRequest
1 голос
/ 05 января 2011

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

Также быстрый вопрос, как изменить значения поля перед проверкой / сохранением встроенного поля формы?

$ this-> form-> getObject работает в действии, но $ this-> embeddedForm-> getObject говорит, что объект не найден

Ответы [ 2 ]

1 голос
/ 07 января 2011

Я нашел действительно простое решение.Решение состоит в том, чтобы переопределить метод save () класса вашей формы вручную.

class SomeUserClass extends myUser {

public function save(Doctrine_Connection $conn = null)
    {
        $this->setFirstName(trim($this->getFirstName()));
        if($this->getFirstName())
        {
                return parent::save();
        }else
        {
                return null;
        }
    }

}

В этом примере я проверяю, пустое ли поле имениЕсли его нет, то сохраните форму.Если оно пустое, то мы не вызываем save в форме.

Мне не удалось заставить валидаторы работать должным образом, и это не менее чистое решение.

0 голосов
/ 05 января 2011

Symfony дает вам кучу хуков в процессе сохранения формы / объекта.Вы можете перезаписать пустые значения пустой проверкой до / после, используя переопределение функций doSave () или processValues ​​() формы.

Подробнее об этом можно прочитать здесь: http://www.symfony -project.org/more-with-symfony/1_4/en/06-Advanced-Forms#chapter_06_saving_object_forms

...