Symfony Добавление и обработка пользовательских полей формы - PullRequest
1 голос
/ 18 июля 2011

Я использую Symfony с propel для создания формы BaseMeetingMeetingsForm.

В MeetingMeetingsForm.class.php у меня есть следующий метод настройки:

public function configure() {
    $this->useFields(array('name', 'group_id', 'location', 'start', 'length'));

    $this->widgetSchema['invited'] = new myWidgetFormTokenAutocompleter(array("url"=>"/user/json"));
}

В MeetingMeetings.php мой метод сохранения просто:

  public function save(PropelPDO $con = null) {
    $this->setOwnerId(Meeting::getUserId());

    return parent::save($con);
  }

Однако propel не знает о моем настраиваемом поле и поэтому ничего с ним не делает. Где и как поместить в специальный раздел, который может работать с этим полем формы, имейте в виду, что это не просто сохранение в базе данных, мне нужно специально работать с вводом, прежде чем он будет введен.

Спасибо за ваше время и советы,

1 Ответ

1 голос
/ 18 июля 2011

Вы должны определить валидатор (и / или создать свой собственный). Метод валидатора clean() возвращает значение, которое необходимо сохранить.

В Doctrine (я не знаю Propel) форма затем вызывает doUpdateObject() в форме, которая, в свою очередь, вызывает функцию fromArray($arr) в модели.

Так что, если это уже свойство вашей модели, вам нужно только создать валидатор. Если это более сложный виджет, вам нужно добавить немного логики в форму.

...