@hollanditkzn

Как показывать в fileinput() ранее загруженных файлов?

Как реализовать так чтобы в fileinput(), если было ранее загружен файл на сервер, Сейчас постоянно показывает около кнопки файл не выбран и если так оставить и сохранить, то он удалится если сохранить
Пробовал сделать fileinput(['value' => $model->img). Но так не поможет
В моделе таблицы
class Zakaz extends ActiveRecord
{
    public $file;
public function rules()
    {
        return [
[['file'], 'file', 'skipOnEmpty' => true],
            [['img'], 'string', 'max' => 100],
}

В форме
<?php $form = ActiveForm::begin([
        'options' => ['enctype' => 'multipart/form-data']
    ]); ?>
<?= $form->field($model, 'file')->fileInput() ?>
<div class="form-group">
        <?= Html::submitButton($model->isNewRecord ? 'Создать' : 'Сохранить', ['class' => $model->isNewRecord ? 'btn btn-success' : 'btn btn-primary']) ?>
    </div>
<?php ActiveForm::end(); ?>

И в контроллере
public function actionUpdate($id)
    {
        $model = $this->findModel($id);

        if ($model->load(Yii::$app->request->post())) {
            $model->file = UploadedFile::getInstance($model, 'file');
            if(isset($model->file)){
            $model->file->saveAs('attachment/'.$model->id_zakaz.'.'.$model->file->extension);
            $model->img = $model->id_zakaz.'.'.$model->file->extension;}
            
            $model->save();

            return $this->redirect(['view', 'id' => $model->id_zakaz]);
        } else {
            return $this->render('update', [
                'model' => $model,
            ]);
        }
    }
  • Вопрос задан
  • 584 просмотра
Решения вопроса 1
mitaichik
@mitaichik
В инпуте вы никак не сможете этого сделать. Тут надо либо рядом с ним выводить надпись что файл уже загружен, либо скрывать инпут, если вы не хотите давать возможность повторно загружать файл.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@Genek2708
public function actionUpdate($id)
{
$model = $this->findModel($id);
$image = $model->file;

if ($model->load(Yii::$app->request->post())) {
$model->file = UploadedFile::getInstance($model, 'file');
if(isset($model->file)){
$model->file->saveAs('attachment/'.$model->id_zakaz.'.'.$model->file->extension);
$model->img = $model->id_zakaz.'.'.$model->file->extension;}

$model->save();
if (empty($model->file) && $image) {
$model->file = $image;
$model->save();
}

return $this->redirect(['view', 'id' => $model->id_zakaz]);
} else {
return $this->render('update', [
'model' => $model,
]);
}
}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы