在开发自定义模型的过程中,我们常常需要添加许多字段。对于一些简单的字段,我们可以利用DEDE系统提供的各种“自动表单”功能(这些功能涵盖了常见的表单类型,非常便捷)。
然而,在某些情况下,我们需要对表单进行更为复杂的处理。例如,当我们希望增加一个select下拉表单,并且下拉选项的内容来源于数据库中的某个表时,“自动表单”就无法满足需求了。
幸运的是,DEDE的字段类型中有一种称为“已经固化在发布表单中的字段”的选项。这意味着“这个字段的表单不是自动生成的,而是预先存在于表单中”。这为我们提供了一个机会,可以通过编写自定义代码来生成复杂的表单。
仅仅选择“固化字段”还不够,我们需要进一步修改模型新增和编辑的后台模板中的代码。原始代码如下:

<?php PrintAutoFieldsAdd($cInfos['fieldset']); ?>
    
这段代码会自动产生所有表单项,无论它们是否为“固化字段”。为了实现我们的需求,需要将其修改为:

<?php PrintAutoFieldsAdd($cInfos['fieldset'],'autofield'); ?>
    
同样地,在编辑模板中,也需要对以下代码进行修改:

PrintAutoFieldsEdit($cInfos['fieldset'],$addRow);
    
将其更改为:

PrintAutoFieldsEdit($cInfos['fieldset'],$addRow,'autofield');
    
通过以上调整,我们就可以成功地将自定义的复杂表单集成到DEDE的模型中。这种方法不仅提升了表单的灵活性,还使得数据来源更加多样化,从而满足更多实际应用场景的需求。
如果您正在寻找一种方法来增强DEDE系统的表单功能,那么“固化字段”是一个值得尝试的选择。通过适当的代码调整,您可以轻松实现从数据库动态加载选项的下拉菜单等功能,让您的网站或应用更加智能化和用户友好。