Pode-se recuperar itens de campo de uma entidade com
// Find all terms on $node in field 'field_tags'.
$terms = field_get_items('node', $node, 'field_tags');
Mas existe uma maneira conveniente de fazer o inverso, Core ou não?
// Attach new term $term to $node in field 'field_tags'.
$term = taxonomy_term_load($tid);
$node = field_set_items('node', $node, 'field_tags', 'taxonomy_term', $term);
node_save($node);
Gostaria de evitar o incômodo de atribuir manualmente um termo $, analisar o aspecto da estrutura da matriz e depois construí-la manualmente, pois às vezes não é trivial.
O único problema na fila principal que pude encontrar que parecia vagamente semelhante foi sobre a linguagem de campo api DX .
Para que tal função exista,
field_set_items()
será necessário identificar ostdClass
objeto como o de um termo de taxonomia e também mapeá-lo para uma função que possa decodificar o objeto e criar uma matriz de campos a partir dele.Como não há função principal para fazer isso, não acho que isso seja fácil.
fonte
entity_type
não é realmente o problema IMHO ... o problema é exatamente o que você adicionou à sua pergunta: "às vezes não é trivial". Como os dados não são triviais, parafield_set_items
funcionar como você deseja, cada tipo de campo no sistema precisaria implementar algum tipo de interface descrevendo como fazer engenharia reversa da matriz de dados a partir de uma variável objeto / arbitrária.Embora isso não ajude a construir a estrutura de matriz algumas vezes complicada, vejo que o que estou procurando foi introduzido em certa medida no Drupal 8. Talvez seja estendido ainda mais no futuro. :)
Nova API mais simples disponível para acessar campos, propriedades e informações de idioma .
Exemplo de uso da página vinculada:
fonte