Как сохранить загруженный файл со статусом, равным 1, в таблице file_managed в Drupal 8?
Всякий раз, когда я загружаю файл, он сохраняется в таблице file_managed со значением состояния 0.
Я использовал File::load( $form_state->getValue('image'))
для загрузки файла. Что мне нужно делать дальше?
В Drupal 7 я бы использовал $file->status = FILE_STATUS_PERMANENT
. Каков эквивалентный код для Drupal 8?
class AddBannerForm extends FormBase {
public function getFormId()
{
return 'add_banner_form';
}
public function buildForm(array $form, FormStateInterface $form_state)
{
$form['image'] = array(
'#type' => 'managed_file',
'#title' => t('Choose Image File'),
'#upload_location' => 'public://images/',
'#default_value' => '',
'#description' => t('Specify an image(s) to display.'),
'#states' => array(
'visible' => array(
':input[name="image_type"]' => array('value' => t('Upload New Image(s)')),
),
),
);
$form['submit'] = array(
'#type' => 'submit',
'#value' => t('Save image'),
);
return $form;
}
public function validateForm(array &$form, FormStateInterface $form_state)
{
File::load( $form_state->getValue('image') );
}
public function submitForm(array &$form, FormStateInterface $form_state)
{
}
}
setPermanent()
&save()
. Я должен был сделать дополнительный шаг$file_usage = \Drupal::service('file.usage'); $file_usage->add($file, 'mymodule', 'mymodule', \Drupal::currentUser()->id());
:) надеюсь, это поможет !!Используйте этот код для постоянного сохранения изображения в форме конфигурации, если вы используете Drupal 8.
источник
Вам также может понадобиться отключить кеш в вашей функции buildForm
источник