Saya perlu menyimpan nilai baru ke bidang pada entitas dan saya bertanya-tanya apakah mungkin menggunakan entitas_metadata_wrapper atau apakah hanya mungkin untuk menetapkan nilai yang ada?
$wrapper->vimn_related_subjects[] = $value;
?
Saya perlu menyimpan nilai baru ke bidang pada entitas dan saya bertanya-tanya apakah mungkin menggunakan entitas_metadata_wrapper atau apakah hanya mungkin untuk menetapkan nilai yang ada?
$wrapper->vimn_related_subjects[] = $value;
?
Jawaban:
Saat berurusan dengan bidang multi-nilai, objek pembungkus metadata entitas terkait adalah turunan dari EntityListWrapper (Ini mungkin ide yang baik untuk menelusuri API untuk melihat metode yang tersedia. Juga perhatikan kelas ini mengimplementasikan antarmuka ArrayAccess )
Jadi cara paling sederhana untuk menambahkan nilai baru ke EntityListWrapper adalah dengan menggunakan operator "[]":
$wrapper->field_example[] = $new_value;
Ini menciptakan entri baru dan memberinya nilainya. Dengan metode ini, delta (offset dalam daftar nilai) dibuat secara otomatis. Anda juga dapat mengatur sendiri offset jika diinginkan. Salah satu dari tiga metode berikut ini setara:
$wrapper->field_example[$delta] = $new_value;
$wrapper->field_example->offsetSet($delta, $new_value);
$wrapper->field_example->get($delta)->set($new_value);
Dalam ketiga kasus ini akan menimpa nilai jika delta sudah ada, dan membuat entri baru jika tidak.
Anda juga bisa langsung mengatur array nilai pada bidang itu sendiri. Kedua metode tersebut setara:
$value = array
0 => array('property_example' => 'hello'),
1 => array('property_example' => 'world')
);
$wrapper->field_example = $value;
$wrapper->field_example->set($value);
Namun ini mengharuskan Anda untuk mengetahui struktur internal bidang yang Anda tetapkan karena Anda tidak menggunakan pembungkus metadata bidang tersebut.
Akhirnya Anda bisa mengosongkan bidang multi nilai dengan menyetelnya ke nilai kosong. Ketiga metode ini setara:
$wrapper->field_example->set();
$wrapper->field_example = array();
$wrapper->field_example = NULL;
$w->field_allowed_regions->set(array(null));
adalah satu-satunya opsi kliring yang berfungsi untuk bidang referensi taksonomi multi-nilai saya.