1

我有一个表单,并且想要生成表单的字段名称列表。这是我目前的做法:

$fieldnames = array();  
foreach ($form as $key=>$val){
    if (substr($key, 0, 6) === 'field_'){ 
      $fieldnames[] = $key;
    }
}

有一个更好的方法吗?

更新:只是为了澄清......我想知道是否有一种不那么“笨拙”的方式来做到这一点。例如,内容模块是否提供了一个遍历字段的api函数。(我找不到一个。)

4

2 回答 2

0

抱歉,我不是 100% 确定,但我认为您无法获得所有以编程方式添加的字段。但是如果您从 cck 或从“/admin/content/node-type/stores/fields”添加此字段} 是您正在使用的内容类型,然后您可以从 {content_node_field_instance} 表中获取此字段名称,如下所示

$result_handle = db_query("select field_name from {content_node_field_instance} where 
`type_name` = '%s'","yourContentTypeName") ;
while($result_object = db_fetch_object($result_handle)){
 $fields[] = result_object->field_name ; 
}

现在您有了数组 $fields ,其中包含您的内容类型的所有字段...我希望对您有所帮助

于 2011-08-29T01:51:08.763 回答
0

您通过 cck 添加的字段...或从 UI 字段系统添加的字段以“field_”开头,并且此字段通常位于节点中...因此,如果您在谈论由 cck 添加的节点表单和字段...。你的方式是正确的......但是如果这个字段是通过编程方式添加的......那么你的方式是错误的

于 2011-08-26T01:10:49.987 回答