Yii Framework Forum

Modificar imagenes cargadas


(yamili) #1

Hola que tal soy nueva en yii2, estoy trabajando en un sistema de egresos en el que requiero subir notas de compra, es decir imágenes.
Tengo un formulario llamado Egresos y ya funciona la parte de la subida de la imagen, se guarda tanto en la base de datos como en la carpeta del proyecto, el problema es que si quiero modificar, todos los datos cargan en el formulario excepto el campo donde debería estar la imagen y yo lo que quiero es que al momento de presionar Modificar la imagen actual se cargue en el formulario donde el usuario la remplaza y se guarda la nueva imagen.
El campo al que hago referencia es “descripcion”… Se que me hace falta algo en la función Update del Controlador pero nose como hacerle. Ayuda porfavor

En la vista tengo puesto:
[
‘attribute’=>‘descripcion’,
‘value’=> Yii::getAlias(’@notaImgUrl’) . ‘/’ . $model->descripcion,
‘format’=>[‘image’,[‘width’=> ‘100’, ‘height’=> ‘100’]]
]

En el controlador, en la función de crear:
public function actionCreate()
{
$model = new Egresos();

    if ($model->load(Yii::$app->request->post())) {
        $model->save();
        $egresoId = $model->id_egreso;
        $image = UploadedFile::getInstance($model, 'descripcion');
        $imgName = 'nota_' . $egresoId . '.' .$image->getExtension();

        $image->saveAs(Yii::getAlias('@notaImgPath') . '/' . $imgName); //Guardando en la carpeta del proyecto
        $model->descripcion = $imgName; //Guardando en la base de datos
        $model->save();
        return $this->redirect(['view', 'id' => $model->id_egreso]);
    } else {
        return $this->render('create', [
            'model' => $model,
        ]);
    }
}

En common/config/params-local puse:

<?php Yii::setAlias('@notaImgPath', 'C:\wamp\www\atrio_egresos\images\notas\\'); Yii::setAlias('@notaImgUrl', 'http://localhost/atrio_egresos/images/notas'); return [ ];

(Jiuly Rojas) #2

Como ya guardaste la imagen en la carpeta del proyecto la llamas con un href. Esto para mostrar la imagen. Y para actualizar que es en el controlador update no permitas que cambie la imagen.

Crea un controlador adicional para modificar la imagen

Esta es una extensión para imágenes

https://www.yiiframework.com/extension/yii2-images