【问题标题】:Drupal 9.2.9 - Conditional field in inline_entity_form (#states) not workingDrupal 9.2.9 - inline_entity_form (#states) 中的条件字段不起作用
【发布时间】:2022-01-07 10:54:16
【问题描述】:

我有带有多个“定价”的实体“parking_lot”,在“parking_lot”实体表单中,有一个使用小部件 inline_entity_form_complex 的字段“定价”。在parking_lot 表单中,我使用#states API 设置条件字段(仅显示字段,有时会使用布尔字段)。 #states 有效,但仅以“定价”实体的原始形式起作用,但是当我从 park_lot 实体编辑定价时,#states 不起作用。如何在 inline_entity_form_complex 字段小部件中设置#states?状态在正常字段中起作用,但在小部件中不起作用。 这是我的代码。请查看 Gif #1(工作)和 Gif #2(不工作)。

A 创建了一个 hook_form_FORM_ID_alter() :

$form['field_level_time_unit']['#states'] = [
    'invisible' => [
      'input[name="field_level_pricing_mode"]' => ['value' => 0],
    ]
  ];

  $form['field_level_price']['#states'] = [
    'invisible' => [
      'input[name="field_level_pricing_mode"]' => ['value' => 0],
    ]
  ];

  $form['field_level_of_reference']['#states'] = [
    'visible' => [
      'input[name="field_level_pricing_mode"]' => ['value' => 0],
    ]
  ];

#states 在这里工作:

#states 不适用于小部件 inline_entity_form_complex :

【问题讨论】:

  • 你把代码放在哪个钩子里了?
  • 我在问题中添加了信息。在 hook_form_FORM_ID_alter() 中。
  • 好的,我认为是问题所在:这个钩子只捕获第一个表单,第二个有另一个 form_id。

标签: drupal state drupal-8 drupal-9


【解决方案1】:

我终于找到了解决办法!在 modules/contrib/inline_entity_form/inline_entity_form.api.php 中有几个钩子。我使用了 hook_inline_entity_form_entity_form_alter。我用小部件更新的名称调整了字段名称,并且可以正常工作!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多