답변:
다중 값 필드를 처리 할 때 연관된 엔티티 메타 데이터 랩퍼 오브젝트는 EntityListWrapper 의 인스턴스입니다 (사용 가능한 메소드 를 보려면 API를 찾아 보는 것이 좋습니다. 또한이 클래스는 ArrayAccess 인터페이스를 구현합니다 )
따라서 EntityListWrapper에 새 값을 추가하는 가장 간단한 방법은 "[]"연산자를 사용하는 것입니다.
$wrapper->field_example[] = $new_value;
새 항목을 작성하고 값을 지정합니다. 이 방법을 사용하면 델타 (값 목록 내의 오프셋)가 자동으로 생성됩니다. 원하는 경우 오프셋을 직접 설정할 수도 있습니다. 다음 세 가지 방법 중 하나가 동일합니다.
$wrapper->field_example[$delta] = $new_value;
$wrapper->field_example->offsetSet($delta, $new_value);
$wrapper->field_example->get($delta)->set($new_value);
세 가지 경우 모두 델타가 이미 존재하면 값을 덮어 쓰고 그렇지 않으면 새 항목을 만듭니다.
필드 자체에 값 배열을 직접 설정할 수도 있습니다. 두 방법 모두 동일합니다.
$value = array
0 => array('property_example' => 'hello'),
1 => array('property_example' => 'world')
);
$wrapper->field_example = $value;
$wrapper->field_example->set($value);
그러나이를 위해서는 필드의 메타 데이터 래퍼를 사용하지 않으므로 할당 할 필드의 내부 구조를 알아야합니다.
마지막으로 다중 값 필드를 빈 값으로 설정하여 비울 수 있습니다. 세 가지 방법 모두 동일합니다.
$wrapper->field_example->set();
$wrapper->field_example = array();
$wrapper->field_example = NULL;
$w->field_allowed_regions->set(array(null));
다중 값 분류법 참조 필드에서 작동 한 유일한 지우기 옵션입니다.