У меня есть настраиваемый тип содержимого с полем файла. Я пытаюсь прикрепить файл, загруженный через настраиваемую форму, к настраиваемому типу содержимого. Я могу загрузить узел и обновить все остальные значения узла, кроме поля файла.
Я обнаружил, что Realityloop: программное присоединение файлов к узлу в Drupal 8, но это не похоже для работы.
Это было предложено в приведенной выше ссылке
$ node = Node :: create (['type' => ' article ',' title '=>' Druplicon test ',' field_image '=> [' target_id '=> $ file-> id (),],]); $ node-> save ();
Это то, что я пробовал внутри submitForm
$ fid = $ form_state-> getValue ('file_field_name ') [0]; $ file = File :: load ($ fid); $ file-> setPermanent (); $ file-> save (); $ node = Node :: load ($ nid);')); $ node-> set ('file_field_in_node', $ file-> id); $ node-> save ();
Это устанавливало файл как постоянный в таблице файлов, но на узле не было файла.
Я также пытался сохранить с помощью
$ node-> set ('file_field_in_node', $ file) ;
Это тоже не помогло. Мне также любопытно, какой файл/функция обрабатывает функцию set для поля файла.
ОБНОВЛЕНИЕ:
[Решено] Не уверен, что было не так раньше. Оба подхода теперь работают правильно. Таким образом, установка file_id или объекта файла в поле файла для узла, похоже, правильно сохраняет узел с прикрепленным к нему файлом.
Если вы используете модуль ядра мультимедиа для управлять файлами, вы уже загрузили свой файл и хотите прикрепить его к файлу, например, field_file
$ node = Node :: load (NID); $ node-> set ('field_file', ['target_id' => FID]); $ node-> save ();
Примечание. FID
— это идентификатор вашего файла.
Используйте в настраиваемой форме такой код:
$ form ['imagefile'] = [' #type '=>' managed_file ',' #title '=> $ this-> t (' Imagefile '),' #default_value '=> $ this-> configuration [' imagefile '],' #weight '=>' 0 ',' #upload_location '=>' public://images/redaktion/',];
А вот фрагмент кода, как это работает на низком уровне:
//проверяем, существует ли папка $ folder = date ('Y-m', time ()); $ data = file_get_contents ($ imagefilepath); if (! is_dir ("/ home/rainer/src/asdent/web/sites/default/files/images/pics/{$ folder} ")) {mkdir ("/home/rainer/src/asdent/web/sites/default/files/images/ pics/{$ folder} ");}//создаем файловую сущность $ photo = file_save_data ($ data," public://images/pics/{$ folder}/". $ filename, FILE_EXISTS_REPLACE);//позже в вашей сущности :: create: 'myimage' => ['target_id' => $ photo-> id ()],
Хитрость заключается в том, чтобы заранее создать файловую сущность, а затем связать с ней настраиваемую сущность.
2
Прикрепить файл в MB51 с объектами GOS программно
Я работаю над созданием движения документа материала (отчет MB51) и затем прикрепляю к нему документ. Итак, я закончил создание документа и возвращение номер документа.
А теперь мне нужно прикрепить файл к этому документу. Я не смог узнать, какой BAPI делает это …
, так что могу я пожалуйста, спросите вас, какой BAPI может позволить мне загрузить файл с моего диска в объект?
I хочу сделать то же самое в коде, который я делаю таким образом:
УСЛУГИ ДЛЯ ОБЪЕКТА> СОЗДАТЬ> СОЗДАТЬ ПРИЛОЖЕНИЕ
Приветствую Примечание. Я ищу удаленный способ сделать это, поэтому о модуле ARCHIVOBJECT_CREATE_FILE FunctionModule не может быть речи 🙁
вы можете использовать функциональный модуль ARCHIV_CONNECTION_INSERT. Надеюсь, это нормально вместо BAPI. Есть пост в SAP-блоге с дальнейшим описанием.
https://blogs.sap.com/2018/04/22/programmatically-create -and-retrieve-documents-attached-in-gos-generic-object-services-via-stored-business-document./
2