Yanıtlar:
$entity
Bir diziye dönüştürmenize gerek yok sanırım , bu sadece işe yarar.
$entity->get('field_name')->getValue();
Bilginize: kullanma kint()
gelen devel_kint
modül nesne öğelerine erişmek için kullanılabilecek mevcut tüm yöntemler biliyorum, bu yüzden nispeten sağlayacak var_dump()
daha az yararlıdır.
getValue()
benim için çalışıyor (her ikisi de 8.1.x ve 8.2.x'de) api referansına bakın
->getValue()
geneldir ve alan türünden bağımsız olarak çalışır. Kullanırsanız ->value
, yalnızca alan değeri bir value
özellikte depolandığında çalışır . Daha karmaşık tipler için çalışmaz (örn. Tarih veya işletme referansı).
drupal 8'de, $ node, node düğümüdür
$node->field_machine_name->getValue();
veya
$node->get('field_machine_name')->getValue();
bir dizi değer döndürür.
Yalnızca bir tane beklerseniz, diziyi de
$node->field_machine_name->getString();
veya
$node->get('field_machine_name')->getString();
Alanlar $node->body->value
için örneğin kullanabilmelisiniz . Alan adlarının ne olduğunu bilmiyorsanız , Drupal 8 için Devel modülünü kurmanızı ve düğümü benzerleri aracılığıyla incelemenizi öneririm dsm($node)
.
$entity->toArray()
Bir varlıkta ne olduğunu görmek için her zaman yapabilirsiniz . Xdebug kullanırken (örneğin phpstorm ile) bir varlık nesnesini kendi başına anlamak çok zordur. dsm($node)
Drupal 8'de bir anlam ifade etmekten şüpheliyim . Tarayıcıda hata ayıklama konusunda ısrar ediyorsanız (ancak yapmamalısınız, Drupal 8 xdebug olmadan hata ayıklamak için çok karmaşık) dsm($node->toArray())
istediğiniz şey.
Drupal\Core\Entity\EntityInterface
vardır toArray
.
Düğüm alanı değerlerini almak için aşağıdaki kod parçasını kullanın
Bu, düğüm kimliğini url'den almak için kullanılır.
$nid = \Drupal::routeMatch()->getRawParameter($node_id);
Nid kullanarak düğüm verilerini yüklemek için
$node = \Drupal::entityTypeManager()->getStorage('node')->load($nid);
Bu alan değerini almak için kullanılır.
$terms = $node->get('field_Name')->getValue();
Bu, düğüm başlığını almak için kullanılır.
$product_name = $node->getTitle();
Benim için, bir $entity
(bir düğüm) olan bu çalıştı:
$entity->field_name->getValue();
8.1 kullanarak.
use Drupal\node\Entity\Node
$node = Node::load($nid);
$title = $node->get('title')->value;
Veya
use Drupal\node\Entity\Node
$title = Node::load($nid)->get('title')->value;
İşte https://www.frobiovox.com/posts/2016/03/28/simplify-drupal-8-field-value-calls.html düğüm nesnesindeki değerlere erişimle ilgili güzel yazılar.
Bu sadece:
$node->get('field_name')->getValue()
Alan bir varlık başvuru alanıysa, başvurulan varlıkları elde etmenin bazı özel yolları vardır.
Hedef kimliğini almak için (ilk eleman):
$entity->get('field_entity_reference')->target_id
Yüklenen varlığı almak için (ilk eleman):
$entity->get('field_entity_reference')->entity
->entity
Sahada kullanılırken , varlık otomatik olarak yüklenir.
Alan birden fazla referans içeriyorsa, hepsini bu şekilde alabilirsiniz:
$entities = $entity->get('field_entity_reference')->referencedEntities();
Bu size bir dizi varlık verecektir.