Eu criei o tipo de conteúdo "Galeria" e adicionei dois campos: "foto" e "documento". Em seguida, usei o seguinte código para carregar um arquivo no campo "documento":
$file = file_save_upload('document', array(
'file_validate_extensions' => array('txt doc'), // Validate extensions.
));
// If the file passed validation:
if ($file) {
// Move the file, into the Drupal file system
if ($file = file_move($file, 'public://')) {
$file->status = FILE_STATUS_PERMANENT;
// $file->file_display = 1;
$file = file_save($file);
} else {
$output = t('Failed to write the uploaded file the site\'s file folder.');
}
} else {
$output = t('No file was uploaded.');
}
Estou anexando este arquivo ao nó usando o seguinte código:
$customNode->field_document[$customNode->language][0] = (array)$file;
Quando chamo node_submit()
função, recebo o seguinte erro:
Violação de restrição de integridade: 1048 A coluna 'field_document_display' não pode ser nula
Alguém sabe o que estou fazendo de errado?
Sua solução está quase certa; no entanto, em alguns casos, é necessário definir também a exibição e a descrição.
Para fazer seu código funcionar, faça o seguinte:
fonte
Eu acho que a chave aqui são essas linhas
como Eric van Eldik apontou. Eu estava lutando com exatamente o mesmo problema, adicionando apenas
não ajudou, mas
fez o meu dia.
fonte
Para adicionar arquivo programaticamente ao nó, você pode usar
fonte
Apenas para colar minha solução aqui também, eu precisava criar um novo nó e fazer upload de uma imagem programaticamente.
fonte
Anexe vários arquivos programaticamente no Drupal 8:
fonte