Bir varlık üzerinde bir alana yeni bir değer kaydetmeniz gerekiyor ve entity_metadata_wrapper kullanmak mümkün mü yoksa sadece mevcut bir değer ayarlamak mümkün mü merak ediyordum?
$wrapper->vimn_related_subjects[] = $value;
mi
Bir varlık üzerinde bir alana yeni bir değer kaydetmeniz gerekiyor ve entity_metadata_wrapper kullanmak mümkün mü yoksa sadece mevcut bir değer ayarlamak mümkün mü merak ediyordum?
$wrapper->vimn_related_subjects[] = $value;
mi
Yanıtlar:
Çok değerli alanlarla uğraşırken, ilişkili varlık meta veri sarmalayıcı nesnesi EntityListWrapper örneğidir (Kullanılabilir yöntemlere bakmak için API'ye göz atmak iyi bir fikir olabilir. Ayrıca bu sınıfın ArrayAccess arabirimini uyguladığını unutmayın )
EntityListWrapper'a yeni değerler eklemenin en basit yolu "[]" operatörünü kullanmaktır:
$wrapper->field_example[] = $new_value;
Bu yeni bir giriş oluşturur ve girişe değer atar. Bu yöntemlerle, delta (değer listesindeki ofset) otomatik olarak oluşturulur. İsterseniz ofseti kendiniz de ayarlayabilirsiniz. Aşağıdaki üç yöntemden herhangi biri eşdeğerdir:
$wrapper->field_example[$delta] = $new_value;
$wrapper->field_example->offsetSet($delta, $new_value);
$wrapper->field_example->get($delta)->set($new_value);
Üç durumda da, delta zaten varsa değerlerin üzerine yazar ve yoksa yeni bir giriş oluşturur.
Ayrıca, alanın kendisinde doğrudan bir değer dizisi ayarlayabilirsiniz. Her iki yöntem de eşdeğerdir:
$value = array
0 => array('property_example' => 'hello'),
1 => array('property_example' => 'world')
);
$wrapper->field_example = $value;
$wrapper->field_example->set($value);
Ancak bu, alanın meta veri sarmalayıcısını kullanmadığınız için atadığınız alanın iç yapısını bilmenizi gerektirir.
Son olarak, çok değerli bir alanı boş bir değere ayarlayarak boşaltabilirsiniz. Üç yöntemin hepsi eşdeğerdir:
$wrapper->field_example->set();
$wrapper->field_example = array();
$wrapper->field_example = NULL;
$w->field_allowed_regions->set(array(null));
çok değerli sınıflandırma referans alanım için çalışan tek temizleme seçeneğidir.