web-dev-qa-db-ja.com

エンティティからフィールドの値を取得する

私のサイトにインストールしたのは、Entity APIおよびEntityformモジュールです。 Entityformモジュールを使用すると、任意のユーザーが送信できるフォームを作成できます。フォームタイプのフィールドは、コンテンツタイプと同様に、ビューで使用できます。

通常、phpを使用してフィールドの値をノードからテンプレートにプルするには、次のようにします。

<?php echo $node->field_name[$node->language][0]['value']; ?>

ただし、これはentityforms/entitiesでは機能しません。

誰かがエンティティフォーム内のフィールドに対してこれを行う方法を知っていますか?一部の人々はdevelとdpm()関数を使用することを提案しましたが、それらの使用方法もわかりません。

このフィールドの値を取得する方法の具体的な例は、本当に非常に役立ちます。

11
Dustin

entity_metadata_wrapper で値にアクセスしてみましたか?

$entityform_id = 12; // entity form id
$entityform = entityform_load($entityform_id);
$entityform_wrapper = entity_metadata_wrapper('entityform', $entityform);
// Access fields with $entityform_wrapper->field_name->value() or ->field_name->raw()
drupal_set_message($entityform_wrapper->field_my_field->value()); // for example
13
David Thomas

Entity APIモジュールを使用せずに、エンティティに関連付けられたフィールドの値を取得するには、 field_get_items() ;を使用します。エンティティタイプ、エンティティオブジェクト、フィールド名を渡すだけです。

たとえば、コメントの本文を取得するには、次のコードを使用します。

_if ($items = field_get_items('comment', $comment, 'comment_body')) {
  // ...
}
_

ノードの本体を取得するには、次のコードを使用できます。

_if ($items = field_get_items('node', $node, 'body')) {
  // ...
}
_

エンティティオブジェクトは、 entity_load() から返されたオブジェクト、または node_load()comment_load() などのそのエンティティの特定のロード関数です=、または taxonomy_term_load() 。 Drupal 8では、これらの関数はentity_load()のラッパーです。

フィールドの内容を表示したい場合は、 field_view_field() を使用する必要があります。

7
kiamlaluno

あなたまたはあなたが使用しているいくつかのコードが事前にnode_load()を呼び出しているため、通常$ nodeプロパティで取得できます。

エンティティのプロパティを取得する前に、エンティティを完全にロードする必要があります。

Entity_load()を使用 http://api.drupal.org/api/drupal/includes%21common.inc/function/entity_load/7

次に、実際にフィールドで取得できるロードされたエンティティオブジェクトを取得します。

Dpm()の使用は他の関数と同じです。開発モジュールをインストールするだけです。

だから、このようなことをしてください:

<?php
$entity = entity_load('myEntityType', $entity_id);
dpm($entity);
?>
0
David Meister

これをモジュールの1つに配置し、フォームのページに移動すると、探している情報が見つかります。

function yourmodulename_form_alter(&$form, &$form_state, $form_id) {

  dpm($form);

}
0
user39561

試してください:

$value= field_get_items('entityform', $entityform, 'field_myfieldname');
print '<p>the value is: '.$value.'</p>';

これにより、フィールドの値が出力されます。

それが配列の場合、これを試してください:

$values = field_get_items('entityform', $entityform, 'field_myfieldname');
$value = $values[0]['value'];
print '<p>the value is: '.$value.'</p>';

これは生の出力であり、値の取得元によっては、ここで手動で値をサニタイズする必要がある場合があることに注意してください。

参照: function field_get_items

0
gkom