Field_get_items sürümü "ayarlandı" mı?


9

Bir varlık alan öğelerini

// Find all terms on $node in field 'field_tags'.
$terms = field_get_items('node', $node, 'field_tags');

Ancak bunun tersini, Çekirdeğini veya başka türlü yapmanın uygun bir yolu var mı?

// Attach new term $term to $node in field 'field_tags'.
$term = taxonomy_term_load($tid);
$node = field_set_items('node', $node, 'field_tags', 'taxonomy_term', $term);
node_save($node);

Ben manuel olarak bir $ terim atama güçlük kaçınmak istiyorum, devel içinde dizi yapısı neye benziyor bakmak ve daha sonra bazen önemsiz değil gibi, el ile dizi oluşturmak istiyorum.

Çekirdek kuyruğunda belirsiz bir şekilde benzeyen tek sorun, api DX alan dili hakkındaydı .

Yanıtlar:


6

Hayır, böyle bir işlev yok.

Varlık alanları için Dil desteği konusundaki yorumuma bakın .


1
Teşekkürler Berdir. Ben görünmenizi umuyordum;) ve siz de söylemekten korktum. Yorumunuzdaki kodla ilgili sorun, birçok alan için 'değer'in yetersiz veya sadece düz yanlış olabileceğidir.
Letharion

field_get_items () bu konuda size yardımcı olmaz, değer içeren bir dizi öğe döndürür. Veya alan türü ne olursa olsun. Bunu soyutlamanın bir yolu yok.
Berdir

Örneğin, field_get_items () diziyi döndürür (dizi ('tid' => 123)). Kodunuzun, field_tags öğesinin bir sınıflandırma terimi başvurusu olduğunu ve tid anahtar kümesine sahip olduğunu ve bunun bir sınıflandırma terimine yönelik bir gecikme olduğunu bilmesi gerekir.
Berdir

Yorumlar, verilen bağlantıya göre artık o sayfada görünmüyor.
Junaid

Yorumlar tartışma sayfasında şimdi: drupal.org/node/1500308/discuss
Berdir

2

Böyle bir işlevin var field_set_items()olabilmesi için, stdClassnesneyi bir sınıflandırma teriminin işlevi olarak tanımlayabilmesi ve ayrıca nesneyi deşifre edebilen ve bundan bir alan dizisi oluşturabilen bir işleve eşleşmesi gerekir.

Bunu yapacak temel bir işlev olmadığından bunun kolay olacağını düşünmüyorum.


$ Entity-> entity_type özelliğinin (henüz) olmamasına rağmen çok rahatsız edici , ancak ne olursa olsun, örnek geri aramaya kolayca eklenebilir. Soruyu bu durumu yansıtacak şekilde güncelledim.
Letharion

1
Bir eksikliği entity_typegerçekten sorun değil IMHO ... sorun tam olarak sorunuza eklediğiniz şey: "bazen önemsiz değil". Veriler önemsiz olduğundan, field_set_itemsistediğiniz gibi çalışmak için sistemdeki her alan türünün, veri dizisini bir nesne / rastgele değişkenden nasıl tersine mühendislik yapılacağını açıklayan bir tür arabirim uygulaması gerekir.
Clive

2

Bu, bazen karmaşık dizi yapısının oluşturulmasına yardımcı olmasa da, aradığım şeyin bir dereceye kadar Drupal 8'de tanıtıldığını görüyorum. Belki de gelecekte daha da genişletilecektir. :)

Alanlara, özelliklere ve dil bilgilerine erişmek için yeni daha basit API kullanılabilir .

Bağlantılı sayfadan örnek kullanım:

<?php
// Change a field value.
$body = $comment->get('comment_body');
$body[0]['value'] = 'This is actually a perverted tango';
$comment->set('comment_body', $body);
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.