Различные виджеты в сгенерированном модуле Symfony для редактирования или создания объекта - PullRequest
0 голосов
/ 30 января 2012

В следующем файле generator.yml я могу изменить класс для формы, используемой в бэкэнде. Однако я хотел бы иметь разные формы для редактирования существующего объекта или создания нового.

При редактировании объекта я хочу сбросить поле 'onset', не теряя его при создании нового объекта. Возможно ли это, и если да, то как?

JobeetCategory:
  columns:
    name: { type: string(255), notnull: true, unique: true }
    test: { type: string(255) }
    onset:  { type: boolean }


generator.yml:
config:
  actions: ~
  fields:  ~
  list:
    title: Category Management
  filter:  ~
  form:    
      class: TestForm
  edit:
    title: Editing Category "%%name%%"
  new:
    title: New Category

1 Ответ

1 голос
/ 30 января 2012

Вы можете условно устанавливать или отменять виджеты внутри класса формы, в зависимости от того, новый объект или редактируется:

<?php

class JobeetCategoryForm extends BaseJobeetCategoryForm {

  public function configure() {
    $this->setWidgets(array(
      'onset' => new sfWidgetFormInputCheckbox()
      // other widgets...
    ));
    $this->setValidators(array(
      'onset' => new sfValidatorBoolean()
      // other validators...
    ));
    if (!$this->object->isNew()) {
      // we are editing an existing category
      unset($this['onset']);
    }
    // ...
  }

}
...