문제는 필드의 데이터 유형과 호환되는 빈 값을 설정해야한다는 것입니다. 그렇지 않으면 예외가 발생합니다. 따라서 문자열을 전달 NULL
하거나 전달 array()
하면 오류가 발생합니다.
명심해야 할 또 다른 사항은 전달하는 데이터가 필드가 단일 값인지, 다중 값 필드인지 또는 여러 속성을 가진 필드인지에 따라 달라진다는 것입니다.
필드가 단일 값이고 필드의 랩퍼가 EntityValueWrapper 의 인스턴스 인 경우 해당 데이터 유형과 호환 되는 빈 값을 지정해야합니다 . 예를 들어 다음 두 가지 방법은 동일합니다.
$wrapper->title = '';
$wrapper->title->set('');
그러나 데이터 유형이 title
필드 와 호환되지 않기 때문에 다음 세 가지 예에서 예외가 발생 합니다.
$wrapper->title->set();
$wrapper->title->set(NULL);
$wrapper->title->set(array());
필드가 여러 속성 (예 : a value
및 format
속성을 모두 정의한 형식화 된 텍스트 필드 )과 EntityStructureWrapper 인스턴스가있는 필드 인 경우 array()
또는 NULL
올바른 빈 값이됩니다. 따라서 다음을 수행 할 수 있습니다.
$wrapper->field_formatted_text = array();
$wrapper->field_formatted_text = NULL;
그러나이 경우 빈 문자열을 전달하면 오류가 발생했을 것입니다. value
대신 속성을 비워 두도록 선택할 수 있습니다 .이 경우 문자열은 올바른 데이터 유형입니다.
$wrapper->field_formatted_text->value = '';
마지막으로, 필드가 다중 값 필드 (따라서 래퍼가 EntityListWrapper 의 인스턴스 인 경우 ) array
이거나 NULL
올바른 빈 값이면 다음 세 줄은 동일합니다.
$wrapper->field_example_multiple->set();
$wrapper->field_example_multiple = array();
$wrapper->field_example_multiple = NULL;
참고 : clear
랩퍼 에서 메소드를 호출하는 것은 필드를 빈 값으로 설정하는 것과 다릅니다. 필드가 빈 값으로 설정 되면 필드의 상위 랩퍼에서 EntityMetadataWrapper :: updateParent 를 호출합니다 . 이를 통해 hook_entity_property_info 에 setter callback
의해 정의 된 사항 이 호출됩니다. 전화 clear
는 그렇게하지 않습니다.
EntityStructureWrapper::clear()
또는EntityValueWrapper::clear()
방법 을 찾고 있습니까?