Zapisz nową wartość z entity_metadata_wrapper w polu encji, która jest tablicą
9
Muszę zapisać nową wartość w polu na encji i zastanawiałem się, czy można użyć encji_zadania_metadanych_instancji, czy też można ustawić tylko istniejącą wartość?
oto jak ustawiłem wartość $ wrapper-> vimn_related_subjects-> set (array ($ key)); ale jeśli chciałbym dodać wartość na końcu tablicy? czy to jest możliwe?
W przypadku pól o wielu wartościach powiązany obiekt opakowania metadanych encji jest instancją EntityListWrapper (dobrym pomysłem może być przejrzenie interfejsu API w celu sprawdzenia dostępnych metod. Należy również pamiętać, że ta klasa implementuje interfejs ArrayAccess )
Tak więc najprostszym sposobem dodania nowych wartości do EntityListWrapper jest użycie operatora „[]”:
$wrapper->field_example[]= $new_value;
Spowoduje to utworzenie nowego wpisu i przypisanie mu wartości. Dzięki tym metodom delta (przesunięcie na liście wartości) jest tworzona automatycznie. Możesz także ustawić przesunięcie, jeśli chcesz. Każda z trzech poniższych metod jest równoważna:
„EntityMetadataWrapperException: Nieznana właściwość danych Array. In EntityStructureWrapper-> getPropertyInfo ()” Próbuję drugiego podejścia, chociaż celuję w konkretny język. tj. $ wrapper-> language ($ lang) -> {$ field} -> set ($ new_array);
AlxVallejo
$w->field_allowed_regions->set(array(null));jest jedyną opcją rozliczeniową, która działała w moim polu referencyjnym systematyki wielu wartości.
$wrapper->vimn_related_subjects[] = $value;
?Odpowiedzi:
W przypadku pól o wielu wartościach powiązany obiekt opakowania metadanych encji jest instancją EntityListWrapper (dobrym pomysłem może być przejrzenie interfejsu API w celu sprawdzenia dostępnych metod. Należy również pamiętać, że ta klasa implementuje interfejs ArrayAccess )
Tak więc najprostszym sposobem dodania nowych wartości do EntityListWrapper jest użycie operatora „[]”:
Spowoduje to utworzenie nowego wpisu i przypisanie mu wartości. Dzięki tym metodom delta (przesunięcie na liście wartości) jest tworzona automatycznie. Możesz także ustawić przesunięcie, jeśli chcesz. Każda z trzech poniższych metod jest równoważna:
We wszystkich trzech przypadkach spowoduje to zastąpienie wartości, jeśli delta już istnieje, i utworzy nowy wpis, jeśli nie.
Możesz także bezpośrednio ustawić tablicę wartości na samym polu. Obie metody są równoważne:
Wymaga to jednak znajomości wewnętrznej struktury pola, do którego przypisujesz, ponieważ nie używasz opakowania metadanych pola.
Na koniec możesz opróżnić pole wielu wartości, ustawiając je na pustą wartość. Wszystkie trzy metody są równoważne:
źródło
$w->field_allowed_regions->set(array(null));
jest jedyną opcją rozliczeniową, która działała w moim polu referencyjnym systematyki wielu wartości.znalazłem to
była śmiertelna porażka. Ale
było dozwolone.
źródło