-1

名前、ロゴ、電話番号、電話の種類を表示している Drupal のビューがあります。ビューからこれを抽出する php スクリプトを作成して、これを Android アプリで実行し、データを (JSON として) プルできるようにしました。node_id と会社名 (タイトル) を使用して JSON 出力を正常に作成しましたが、電話情報を取得しようとすると、null 値が返されます。以下のコードを添付しました。

foreach($view->result AS $company) {
    $companylist = array();
    $data = $company->_field_data['nid']['entity'];
    $companylist['company'] = $company->node_title;
    $companylist['nid'] = $company->nid;
    $data2 = field_get_items('node',$data,'field_data_field_companyphone_node_entity_type');
    $phone  = entity_load('field_collection_item',array($data2[LANGUAGE_NONE][0]['value']));
    $companylist['type'] = $phone[0];
    $companylist['phone'] =$phone[1];   
    $return[]=$companylist;
}
   }
return $return;
  }
4

1 に答える 1

0

最後に、コードでラッパーを使用して解決策を見つけました。また、フィールド コレクションのループごとに内部を作成します。これが将来他の人に役立つことを願っています。更新されたコードは以下に含まれています。

$fc_fields = field_get_items('node', $node, 'field_companyphone');
    if (!empty($fc_fields)){
        $field = field_view_value('node',$node, 'field_companyphone', $fc_fields[0]);
        foreach ($field['entity']['field_collection_item'] as $id => $field_collection){
            // load the field collection item entity
            $field_collection_item = field_collection_item_load($id);
            // wrap the entity and make it easier to get the values of fields
            $field_wrapper = entity_metadata_wrapper('field_collection_item', $field_collection_item);       


            // all values from a field collection
            $field_collection_phone_type_item   = $field_wrapper->field_companyphone_type->value(); // an array of phone type data  


            $companylist['type'] = $field_collection_phone_type_item->name;
            $companylist['phone']   = $field_wrapper->field_phone_phone->value();

        }
    }


    $return[]=$companylist;
于 2013-09-22T18:01:24.950 に答える