Sorun, alanınızın veri türüyle uyumlu boş bir değer ayarlamanız gerektiğidir. Bunu yapmazsanız, bir istisna oluşacaktır. Geçme NULLveya array()ne zaman bir dize nedenle bir hata yükseltecektir bekleniyor.
Akılda tutulması gereken bir başka şey de, ilettiğiniz verilerin alanınızın tek bir değer mi, çok değerli bir alan mı yoksa birden çok özelliği olan bir alan mı olduğuna bağlı olacağıdır.
Alanınız tek bir değerse (ve dolayısıyla alanın sarmalayıcısı EntityValueWrapper örneğiyse ) , söz konusu veri türüyle uyumlu boş bir değer atamalısınız . Örneğin, aşağıdaki iki yöntem eşdeğerdir:
$wrapper->title = '';
$wrapper->title->set('');
Bununla birlikte, veri türleri titlealanla uyumlu olmadığından aşağıdaki üç örnek bir istisna oluşturacaktır :
$wrapper->title->set();
$wrapper->title->set(NULL);
$wrapper->title->set(array());
Saha birden (örneğin a hem tanımlanmış bir biçimlendirilmiş metin alanı, özellikleri olan bir saha ise valueve formatdolayısıyla mülkiyet) ve bir örneği EntityStructureWrapper ardından array()ya NULLdoğru boş değer olacaktır. Böylece aşağıdakileri yapabilirsiniz:
$wrapper->field_formatted_text = array();
$wrapper->field_formatted_text = NULL;
Ancak bu durumda, boş bir dizenin iletilmesi bir hataya neden olur. valueBunun yerine özelliği boş bırakmayı seçmiş olabileceğinizi unutmayın; bu durumda bir dize doğru veri türüdür:
$wrapper->field_formatted_text->value = '';
Son olarak, alanınız çok değerli bir alansa (ve bu nedenle paketleyiciniz EntityListWrapper örneğiyse ) arrayveya NULLdoğru boş değerlerse ve aşağıdaki üç satır eşdeğerdir:
$wrapper->field_example_multiple->set();
$wrapper->field_example_multiple = array();
$wrapper->field_example_multiple = NULL;
Not: clearYöntemin sarmalayıcılarda çağrılması, alanı boş bir değere ayarlamakla eşdeğer değildir. Alan boş bir değere ayarlandığında , alanın üst sarıcısında EntityMetadataWrapper :: updateParent öğesini çağırır . Bu setter callback, hook_entity_property_info tarafından tanımlananların çağrılmasını sağlar. Aramak clearbunu yapmaz.
EntityStructureWrapper::clear()veyaEntityValueWrapper::clear()yöntemler belki?