Ich fange an, dieses Formular zu verwenden, um auf Daten in meinem Modul zuzugreifen. (Siehe Kommentar Nr. 1. )
$node->field_test[$node->language][0]['value']
Ich dachte, das sieht nach einer ziemlich guten Lösung aus, aber weiter unten fand ich diese Frage :
Nehmen Sie nicht an, dass 'und' für Felder von Entitäten ohne Sprache gilt, sondern auch für Felder, die nicht übersetzbar sind, und ohne das Entitätsübersetzungsmodul, bei dem es sich ausschließlich um Felder handelt. Darüber hinaus gibt es Unterschiede zwischen den verschiedenen 7.x-Versionen von Drupal.
Verwenden Sie besser diefield_get_items()
Funktion, die für Sie aussortiert, unter welchem Sprachcode die Daten gespeichert sind.
Und jetzt weiß ich nicht, ob das, was ich benutze, irgendetwas kaputtmachen könnte.
entity_metadata_wrapper()
abgelehnt? Ich habe versucht, dies in meinem Modul aufzurufen, und bekamFatal error: Call to undefined function entity_metadata_wrapper()
- ich habe auch eine Quellensuche in meiner Drupal 7.12-Installation in Dreamweaver durchgeführt und an einer anderen Stelle im Code 0 Ergebnisse gefunden!$node->field_name[LANGUAGE_NONE][0]['value'] = 'foo';
der effizienteste Weg ist.Zum Lesen sollten Sie immer in der Lage sein, field_get_items () zu verwenden , wodurch die richtige Sprache für Sie ausgewählt wird und auch geprüft wird, ob das Feld Werte enthält.
Leider ist die Feld-API in 7.x stark eingeschränkt. Es gibt keine Möglichkeit, z. B. das erste Feldelement abzurufen. Wagen Sie es nicht einmal, den Wert mit einem einzigen Funktionsaufruf abzurufen. Und es gibt keine field_set_items ( ) Gegenstück.
Ja, das Entity-API-Modul bietet eine schönere API mit dem Nachteil, dass es auch einiges an Aufwand mit sich bringt . Wenn Sie versuchen, einen Entity-Wrapper zu sichern, erhalten Sie normalerweise entweder nichts oder eine Wand aus unlesbaren Arrays.
quelle
quelle