it-swarm.com.de

Abrufen des Feldwerts von einer Entität

Was ich auf meiner Site installiert habe, sind die Entity API- und Entityform-Module. Mit dem Entityform-Modul kann ich Formulare erstellen, die jeder Benutzer senden kann, und die Formularfelder können in Ansichten verwendet werden, ähnlich wie ein Inhaltstyp funktionieren würde.

Normalerweise würde ich Folgendes tun, um den Wert eines Feldes mit PHP von einem Knoten in meine Vorlage zu ziehen:

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

Dies funktioniert jedoch nicht mit Entityforms/Entities.

Kennt jemand eine Möglichkeit, dies für ein Feld innerhalb einer Entitätsform zu tun? Einige Leute haben vorgeschlagen, devel und die Funktion dpm () zu verwenden, aber ich habe auch keine Ahnung, wie man diese verwendet.

Einige konkrete Beispiele, wie ich den Wert dieses Feldes ermitteln kann, würden mir sehr helfen.

11
Dustin

Haben Sie versucht, mit entity_metadata_wrapper auf die Werte zuzugreifen?

$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

Ohne das Entity-API-Modul zu verwenden, verwenden Sie field_get_items () ; Sie übergeben nur den Entitätstyp, das Entitätsobjekt und den Feldnamen.

Um beispielsweise den Text eines Kommentars abzurufen, verwenden Sie den folgenden Code.

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

Um den Hauptteil eines Knotens abzurufen, können Sie den folgenden Code verwenden.

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

Das Entitätsobjekt ist das von entity_load () zurückgegebene Objekt oder eine bestimmte Ladefunktion für diese Entität, z. B. node_load () , comment_load () = oder taxonomy_term_load () . In Drupal 8) sind diese Funktionen Wrapper für entity_load().

Wenn Sie den Inhalt des Feldes anzeigen möchten, sollten Sie field_view_field () verwenden.

7
kiamlaluno

Normalerweise können Sie auf $ node-Eigenschaften zugreifen, da Sie oder ein von Ihnen verwendeter Code zuvor node_load () aufrufen.

Sie müssen eine Entität vollständig laden, bevor Sie zu ihren Eigenschaften gelangen können.

Verwenden Sie entity_load () http://api.drupal.org/api/drupal/includes%21common.inc/function/entity_load/7

Dann haben Sie tatsächlich ein geladenes Entitätsobjekt, das Sie in den Feldern von erhalten können.

Die Verwendung von dpm () ist mit jeder anderen Funktion identisch. Sie müssen lediglich das Entwicklungsmodul installieren.

Also mach so etwas:

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

Platzieren Sie dies in einem Ihrer Module und gehen Sie zur Seite des Formulars. Dort finden Sie die Informationen, nach denen Sie suchen.

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

  dpm($form);

}
0
user39561

Versuchen:

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

Dies sollte den Wert des Feldes drucken.

Wenn es sich um ein Array handelt, versuchen Sie Folgendes:

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

Denken Sie daran, dass dies die Rohausgabe ist. Je nachdem, woher der Wert stammt, müssen Sie den Wert hier möglicherweise manuell bereinigen.

Siehe: Funktion field_get_items

0
gkom