节点表单是系统中使用最频繁最重要的表单,她是建立在许多组件和概念之上的,内容广泛,本篇意在起到一个指示和总结作用,帮助想直接操控节点表单的读者明白需要知道些什么,同时就节点表单本身进行介绍,这好似在爬山到了顶上,顶上并没有多少东西,节点表单就是最终的应用,就其本身并没有多少内容,因此本篇会很短,仅是一个综合运用的总结,更多重要内容是在爬山的路上,没有路上的内容将无法到达山顶,因此在阅读本篇前需要先知道许多前置知识,这些本系列已发布,这里整理出来供读者去学习:
《表单API》 :实体表单建立在基础表单之上,本系列发布过多篇表单相关主题,如示例、进阶等,后续还会针对表单具体问题继续发布
《实体表单entity form》 :完成所有实体表单的相同工作,重点讲述通用基类和实体表单运作流程
《实体表单显示EntityFormDisplay》 :管控表单中哪些字段显示,及其如何显示,介绍了表单模式
《字段控件FieldWidget》 :负责单个字段的表单生成、值提取、表单错误显示
《实体表单验证(上下集)》 :结合类型化数据组件验证表单、设置约束
《临时储存与消息服务》 :为节点表单提供预览数据的暂时存储,内容相对简单
节点表单建立在以上这些知识之上,是对她们的综合运用,下文讲述节点表单本身
节点表单设置:
节点添加表单的路由定义在node模块的静态路由定义文件中:
路由名:node.add
控制器为:\Drupal\node\Controller\NodeController::add
路径:'/node/add/{node_type}'
节点编辑、删除路由定义在节点模块的路由提供器中:
提供器类:\Drupal\node\Entity\NodeRouteProvider::getRoutes
路由名:“entity.node.edit_form”和“entity.node.delete_form”
路径分别为:
'/node/{node}/edit'
'/node/{node}/delete'
编辑、删除路由均以通用的“_entity_form”方式设置,添加路由虽然以控制器方式指定,但并没有什么区别
添加和编辑所用表单类(在实体释文中指定,这是本篇重点讲述的内容):
"Drupal\node\NodeForm"
删除表单有两个:
Drupal\node\Form\NodeDeleteForm(直接删除)
Drupal\node\Form\DeleteMultiple(多步确认删除)
得到节点表单:
和通用的实体表单一样,是通过实体表单构建器产生,节点添加表单代码示例: