Как распаковать форму в symfony? - PullRequest
0 голосов
/ 18 июля 2011
$twoform = new TwoForm;

$this->embedForm('twoform', $twoform);

 if($value == false) {
  // unembedForm twoform  HOW?
}

как мне сделать, если $value == false, то форма twoform не отправляется и не добавляется в базу данных?неустановленные поля не работают, потому что форма отправляет, но имеет значение NULL.

Ответы [ 2 ]

0 голосов
/ 18 июля 2011

Я думаю, вам просто нужно переопределить метод привязки формы:

public function bind(array $taintedValues = null, array $taintedFiles = null) {
  if ($value) {
    unset($this['twoForm']); // UNSET embedded form
  }
  parent::bind($taintedValues, $taintedFiles);
}

Здесь $ value может быть параметром формы (используйте для этого $ this-> getOption ('option_name')) или некоторым значением из почтового запроса (т.е. $ taintedValues ​​['widget_name']).

0 голосов
/ 18 июля 2011

Вы можете сделать это, чтобы сбросить форму

unset($this->widgetSchema['twoForm']); unset($this->validatorSchema['twoForm']); unset($this->formFieldSchema['twoForm']);

Но это не помешает опубликовать форму в том виде, в котором она была ранее видна.Вы можете заменить валидатор, чтобы игнорировать опубликованные значения.$this->setValidator('twoForm', new sfValidatorPass());

Если приведенный пример завершен, лучше не вставлять форму, если $ value == false

Вставка базы данных зависит от того, как в нее сохраняются ваши данныеsfDoctrineForm?)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...