SuperAPI AI 工具集

drupal-form-alter

编程与开发

查看项目

更新于 10-15 21:37

技能介绍

用途:整理 Drupal 表单修改(form alter)的常见模式,用于在自定义模块中改写已有表单的行为与外观,包括字段访问权限、必填与默认值、验证和提交逻辑。

主要能力与写法:

  • 传统钩子 hook_form_alter 与更精准的 hook_form_FORM_ID_alter;
  • Drupal 10.3+ / 11 的 OOP 钩子,基于 #[Hook] 属性,示例类位于 src/Hook/MyModuleHooks.php,可声明 #[Hook('form_alter')] 并在方法内按 $form_id 判断,也可用 #[Hook('form_node_article_form_alter')] 直接定位特定表单。
  • 常见修改:把字段设为必填 $form['field_subtitle']['widget'][0]['value']['#required'] = TRUE; 设置默认值 $form['field_subtitle']['widget'][0]['value']['#default_value'] = 'Default'; 隐藏字段 $form['field_internal']['#access'] = FALSE; 添加 CSS 类 $form['#attributes']['class'][] = 'my-custom-form'; 修改提交按钮文字 $form['actions']['submit']['#value'] = t('Save Article'); 追加提交处理器 $form['actions']['submit']['#submit'][] = '::mySubmitHandler'; 前置验证处理器 array_unshift($form['#validate'], '::myValidateHandler');
  • 也可在 OOP 钩子中追加 $form['#validate'][] 与 $form['actions']['submit']['#submit'][]。
  • 获取表单对象:$form_object = $form_state->getFormObject();,并可用 instanceof NodeForm 判断后调用 getEntity() 取得实体。

适用场景:需要在不改动原始表单定义的前提下,统一调整节点表单等表单的字段与行为。

限制:资料未提供版本兼容细节之外的说明,也未提供测试、依赖或收费信息,相关事实暂未提供。