En esta ocacion les traigo la manera de como subir imagenes al servidor y una ves subidas las imagenes como eliminarlas del servidor, este ejemplo es la continuacion del ejemplo anterior pero mejorado, asi que sin mas aqui esta el codigo.
archivo _form.php
..//array de opciones del form...'htmlOptions' => array(
'enctype' => 'multipart/form-data',
),
...
..//Otros Elementos..
..
<div class="row">
<?php echo $form->labelEx($model,'imagen'); ?> <?php echo CHtml::activeFileField($model, 'imagen'); ?> //con esto levantamos la imagen
<?php echo $form->error($model,'imagen'); ?></div>
<?php if($model->isNewRecord!='1'){ ?><div class="row">
<?php echo CHtml::image(Yii::app()->request->baseUrl.'/banner/'.$model->imagen,"imagen",array("width"=>200)); ?> // La Imagen se muestra aquí si la página es la página de actualización
</div>
<?php
}
?>
..
..
Otros elementos
..
..
solo es necesario agregar una linea en el metodo rules() en el Modelo, de la siguiente manera:
array('imagen', 'file','types'=>'jpg, gif, png', 'allowEmpty'=>true, 'on'=>'update'),
array('titulo, imagen', 'length', 'max'=>255, 'on'=>'insert,update'),
public function actionCreate()
{
$model=new Banner;
// Uncomment the following line if AJAX validation is needed
// $this->performAjaxValidation($model);
if(isset($_POST['Banner']))
{
$rnd = rand(0,9999); // Generamos un numero aleatorio entre 0-9999
$model->attributes=$_POST['Banner'];
$subiendoImagen=CUploadedFile::getInstance($model,'imagen');
$imgNombre = "{$rnd}-{$subiendoImagen}"; // numero aleatorio + nombre de archivo
$model->imagen = $imgNombre;
if($model->save()){
$subiendoImagen->saveAs(Yii::app()->basePath.'/../images/banner/'.$imgNombre);
$this->redirect(array('view','id'=>$model->id));
}
}
$this->render('create',array(
'model'=>$model,
));
}
public function actionUpdate($id)
{
$model=$this->loadModel($id);
if(isset($_POST['Banner']))
{
$rnd = rand(0,9999); // Generamos un numero aleatorio entre 0-9999
$_POST['Banner']['imagen'] = $model->imagen;
$model->attributes=$_POST['Banner'];
$subiendoImagen=CUploadedFile::getInstance($model,'imagen');
$imgNombre = "{$rnd}-{$subiendoImagen}"; // numero aleatorio + nombre de archivo
$model->imagen = $imgNombre;
if($model->save()){
if(!empty($subiendoImagen)){
$subiendoImagen->saveAs(Yii::app()->basePath.'/../images/banner/'.$imgNombre);
}
$this->redirect(array('view','id'=>$model->id));
}
}
$this->render('update',array(
'model'=>$model,
));
}
De paso, para borrar los archivos del servidor lo conseguí haciendo lo siguiente, (seguro no es la mejor forma pero funciona)
public function actionDelete($id)
{
$model = $this->loadModel($id);
unlink(Yii::app()->basePath.'/../images/banner/'.$model->imagen);
$this->loadModel($id)->delete();
// if AJAX request (triggered by deletion via admin grid view), we should not redirect the browser
if(!isset($_GET['ajax']))
$this->redirect(isset($_POST['returnUrl']) ? $_POST['returnUrl'] : array('index'));
}
Fuente: Aqui
0 comentarios:
Publicar un comentario