Tengo un formulario con un fileField ($form->fileField($model,‘archivo’)) y lo tengo que sea de manera opcional subir un archivo, pero al momento de validar todo el formulario me borra el archivo que seleccione en el fileField…los otros campos no los borra pero el del fileField me aparece “No selecciono ningun archivo”…
En un caso de que todos los campos estén correctos todo funciona correctamente, pero por ejemplo ahí otros campos que son obligatorios y si no los lleno al momento que hace la validación me muestra el error de los otros campos, pero si tenia seleccionado un archivo me lo borra…
Los únicos campos requeridos son ubicación y descripcion, el de archivo es opcional
Vista:------------------------------------------------------------
$form = $this->beginWidget(‘CActiveForm’, array(
'id' => 'solicitud-de-pagina-form',
'enableAjaxValidation' => false,
'htmlOptions' => array(
'enctype' => 'multipart/form-data',
),
));
?>
<p class="note">Campos con <span class="required">*</span> son requeridos.</p>
<?php echo $form->errorSummary($model); ?>
<div class="row">
<?php echo $form->labelEx($model, 'Usuario'); ?>
<?php echo $form->dropDownList($model, 'id_usuario', CHtml::listData($administrativos, 'id', 'nombreCompleto')); ?>
</div>
<div class="row">
<?php echo $form->label($model, 'archivo'); ?>
<?php echo $form->fileField($model, 'archivo'); ?>
<?php echo $form->error($model, 'archivo'); ?>
</div>
<div class="row">
<?php echo $form->labelEx($model, 'descripcion'); ?>
<?php echo $form->textArea($model, 'descripcion', array('rows' => 6, 'cols' => 50, 'class' => 'txtArea')); ?>
<?php echo $form->error($model, 'descripcion'); ?>
</div>
<div class="row">
<?php echo $form->labelEx($model, 'ubicacion'); ?>
<?php echo $form->textField($model, 'ubicacion', array('size' => 45, 'maxlength' => 45, 'class' => 'txtNormal')); ?>
<?php echo $form->error($model, 'ubicacion'); ?>
</div>
<div class="row buttons">
<?php echo CHtml::submitButton($model->isNewRecord ? 'Crear' : 'Guardar', array('class' => 'btnGuardar')); ?>
</div>
<?php $this->endWidget(); ?>
Controlador ------------------------------------------------------
public function actionCreate() {
$administrativos = User::model()->getAdministrativos(); //es para llenar un combo en la vista
$model = new SolicitudDePagina;
$rnd = rand(0, 9999); //genera un número aleatorio
// Uncomment the following line if AJAX validation is needed
//$this->performAjaxValidation($model);
if (isset($_POST['SolicitudDePagina'])) {
$model->attributes = $_POST['SolicitudDePagina'];
$model->tipo_de_modificacion = '0';
$model->user_create = Yii::app()->user->getId();
$model->date_create = new CDbExpression('NOW()');
$model->activo = '1';
$fileName = "";
//Para subir la imagen -- obtenemos una instancia del archivo seleccionado
$uploadedFile = CUploadedFile::getInstance($model, 'archivo');
if (!empty($uploadedFile)){
$fileName = "{$rnd}-{$uploadedFile}"; // numero aleatorio + nombre de archivo
}
$model->archivo = $fileName;
if ($model->save()) {
if ($uploadedFile){
$uploadedFile->saveAs(Yii::app()->basePath . '/../uploads/' . $fileName);
}
Yii::app()->user->setFlash("success", "La solicitud de creó correctamente");
$this->redirect(array('view', 'id' => $model->id_solicitud_de_pagina));
}
}
$this->render('create', array(
'model' => $model,
'administrativos' => $administrativos,
));
}