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

发布于 2024-12-29 13:37:57 字数 521 浏览 1 评论 0原文

在下面的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

In the following generator.yml, I can change the class for the form used in the backend. However, I would like to have different forms for when editing an existing object, or when creating a new one.

When editing an object, I want to unset the field 'onset', without losing it when creating a new object. Is this possible, and if so, how?

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

如梦亦如幻 2025-01-05 13:37:57

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

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

}

You can conditionally set or unset widgets inside your form class, depending on wether your object is new or being edited:

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

}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文