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' から追加した場合、{stores } は、作業しているコンテンツ タイプであり、次のように {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 に答える