Utworzyłem typ zawartości „Galeria” i dodałem dwa pola: „zdjęcie” i „dokument”. Następnie użyłem następującego kodu do przesłania pliku w polu „dokument”:
$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.');
}
Załączam ten plik do węzła za pomocą następującego kodu:
$customNode->field_document[$customNode->language][0] = (array)$file;
Po wywołaniu node_submit()
funkcji pojawia się następujący błąd:
Naruszenie ograniczenia integralności: 1048 Kolumna „wyświetlanie_pliku_dokumentu” nie może mieć wartości NULL
Czy ktoś wie, co robię źle?
Twoje rozwiązanie jest prawie właściwe; jednak w niektórych przypadkach wymaga to również ustawienia wyświetlania i opisu.
Aby kod działał, wykonaj następujące czynności:
źródło
Myślę, że kluczem tutaj są te linie
jak zauważył Eric van Eldik. Walczyłem z dokładnie tym samym problemem, dodając tylko
nie pomogło, ale
uczyniło mój dzień.
źródło
Do programowego dodania pliku do węzła można użyć
źródło
Wkrótce też tutaj wkleję moje rozwiązanie, musiałem utworzyć nowy węzeł i załadować programowo obraz.
źródło
Dołącz programowo wiele plików w Drupal 8:
źródło