生成的symfony模块中的不同小部件用于编辑或创建对象

时间:2012-01-30 16:24:41

标签: php symfony1 doctrine symfony-1.4

在下面的generator.yml中,我可以更改后端使用的表单的类。但是,我希望在编辑现有对象或创建新对象时有不同的形式。

编辑对象时,我想取消设置字段“开始”,而不是在创建新对象时丢失它。这是可能的,如果是的话,怎么样?

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 个答案:

答案 0 :(得分:1)

您可以在表单类中有条件地设置或取消设置小部件,具体取决于您的对象是新对象还是正在编辑:

<?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']);
    }
    // ...
  }

}