Tengo una aplicación construida usando el marco Yii2, y la aplicación tiene un formulario usando kartik \ form \ ActiveForm , esta es una línea en mi _form.php. En ese formulario, el usuario debe cargar un archivo y enviarlo. Después de que ese formulario se guardó con éxito, el usuario intentó actualizar los datos, pero el formulario no mostró el archivo cargado guardado. Me gusta esto ingrese la descripción de la imagen aquí

Necesito mostrar el nombre del archivo guardado en ese campo de carga. ¿Cómo puedo hacerlo? Este es mi código en _form.php

 <?=
$form->field($model, 'buktiNpwp')->widget(FileInput::classname(), [  
    'options' => [
        'multiple' => false,
        'accept' => 'img/*', 'doc/*', 'file/*',
        'class' => 'optionvalue-img',
        'placeholder' => 'maximum size is 2 MB',            
    ],
    'pluginOptions' => [
        'allowedFileExtensions' => ['jpg', 'gif', 'png', 'jpeg'],
        'maxFileSize' => 2048, //membatasi size file upload
        'layoutTemplates' => ['footer' => 'Maximum size is 2 MB'],
        'browseLabel' => 'Browse (2MB)',
        'showPreview' => false,
        'showCaption' => true,
        'showRemove' => true,
        'showUpload' => false,
    ]
]);
?>
0
Blackjack 16 oct. 2018 a las 18:37

2 respuestas

La mejor respuesta

Para guardar imágenes, haga esto en su controlador. Espero que funcione

$model = new YourModel();

$files = UploadedFile::getInstances($model, 'name');
foreach($files as $file){
   $path = 'somepath';
   $file->saveAs($path);
}

En el controlador de actualización que puede hacer

$images_old = \common\models\YourModel::find()->where(['=', 'some_id', $model->id])->all();

if ($images_old) {
            foreach ($images_old as $image) {
                $baseurl = \Yii::$app->request->BaseUrl;
                $image_url = $baseurl . '/uploads/' . $image->thumbnail;
                $all_images[] = Html::img("$image_url", ['class' => 'file-preview-image']);
                $obj = (object) array('caption' => '', 'url' => $baseurl . '/some-path/delete-image', 'key' => $image->id);
                $all_images_preview[] = $obj;
            }
        }

Ahora envíe $ all_images_preview y $ all_images a su archivo de vista y muéstrelo como

$form->field($images, 'name[]')->widget(FileInput::classname(), [
            'options' => ['accept' => 'image/*', 'multiple' => true],
            'pluginOptions' => [
                'previewFileType' => 'image',
                'allowedFileExtensions' => ['jpg', 'gif', 'png', 'bmp','jpeg'],
                'showUpload' => true,
                'initialPreview' => $all_images,
                'initialPreviewConfig'=>$all_images_preview,
                'overwriteInitial' => false,
                'showRemove' => true,
                'showPreview' => true,
                'uploadUrl' => Url::to(['cases/upload']),
                //'onRemove'=>''

            ],
        ]);
1
Fareed Ud Din 16 oct. 2018 a las 17:53

En su clase de controlador y solo actionUpload defina la ruta del directorio del archivo de carga, porque el modelo UploadedFile guarda un archivo en la ruta física absoluta. Si lo necesita, puede verificar el uso de la variable de publicación $_FILES. El método saveAs necesita una ruta y un nombre de archivo absolutos completos. Use barra o barra invertida según su SO para obtener mejores resultados.

0
Ragner Moura 17 oct. 2018 a las 03:08