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 NULL
veya 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 title
alanla 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 value
ve format
dolayısıyla mülkiyet) ve bir örneği EntityStructureWrapper ardından array()
ya NULL
doğ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. value
Bunun 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 ) array
veya NULL
doğ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: clear
Yö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 clear
bunu yapmaz.
EntityStructureWrapper::clear()
veyaEntityValueWrapper::clear()
yöntemler belki?