Problemas Al Validar Filefield

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>

&lt;?php echo &#036;form-&gt;errorSummary(&#036;model); ?&gt;





    &lt;div class=&quot;row&quot;&gt;


        &lt;?php echo &#036;form-&gt;labelEx(&#036;model, 'Usuario'); ?&gt;


        &lt;?php echo &#036;form-&gt;dropDownList(&#036;model, 'id_usuario',   CHtml::listData(&#036;administrativos, 'id', 'nombreCompleto')); ?&gt;


    &lt;/div&gt;








&lt;div class=&quot;row&quot;&gt;


    &lt;?php echo &#036;form-&gt;label(&#036;model, 'archivo'); ?&gt;


    &lt;?php echo &#036;form-&gt;fileField(&#036;model, 'archivo'); ?&gt;


    &lt;?php echo &#036;form-&gt;error(&#036;model, 'archivo'); ?&gt;


&lt;/div&gt;

<div class="row">

    &lt;?php echo &#036;form-&gt;labelEx(&#036;model, 'descripcion'); ?&gt;


    &lt;?php echo &#036;form-&gt;textArea(&#036;model, 'descripcion', array('rows' =&gt; 6, 'cols' =&gt; 50, 'class' =&gt; 'txtArea')); ?&gt;


    &lt;?php echo &#036;form-&gt;error(&#036;model, 'descripcion'); ?&gt;


&lt;/div&gt;





&lt;div class=&quot;row&quot;&gt;


    &lt;?php echo &#036;form-&gt;labelEx(&#036;model, 'ubicacion'); ?&gt;


    &lt;?php echo &#036;form-&gt;textField(&#036;model, 'ubicacion', array('size' =&gt; 45, 'maxlength' =&gt; 45, 'class' =&gt; 'txtNormal')); ?&gt;


    &lt;?php echo &#036;form-&gt;error(&#036;model, 'ubicacion'); ?&gt;


&lt;/div&gt; 

<div class="row buttons">

    &lt;?php echo CHtml::submitButton(&#036;model-&gt;isNewRecord ? 'Crear' : 'Guardar', array('class' =&gt; 'btnGuardar')); ?&gt;


&lt;/div&gt;





&lt;?php &#036;this-&gt;endWidget(); ?&gt;

Controlador ------------------------------------------------------

public function actionCreate() {

    &#036;administrativos = User::model()-&gt;getAdministrativos(); //es para llenar un combo en la vista


    &#036;model = new SolicitudDePagina;


    &#036;rnd = rand(0, 9999); //genera un número aleatorio       


    // Uncomment the following line if AJAX validation is needed


    //&#036;this-&gt;performAjaxValidation(&#036;model);


    if (isset(&#036;_POST['SolicitudDePagina'])) {


        &#036;model-&gt;attributes = &#036;_POST['SolicitudDePagina'];


        &#036;model-&gt;tipo_de_modificacion = '0';


        &#036;model-&gt;user_create = Yii::app()-&gt;user-&gt;getId();


        &#036;model-&gt;date_create = new CDbExpression('NOW()');


        &#036;model-&gt;activo = '1';


        &#036;fileName = &quot;&quot;;


        //Para subir la imagen -- obtenemos una instancia del archivo seleccionado


        &#036;uploadedFile = CUploadedFile::getInstance(&#036;model, 'archivo');


        if (&#33;empty(&#036;uploadedFile)){


            &#036;fileName = &quot;{&#036;rnd}-{&#036;uploadedFile}&quot;;  // numero aleatorio  + nombre de archivo

}

        &#036;model-&gt;archivo = &#036;fileName;


        if (&#036;model-&gt;save()) {


            if (&#036;uploadedFile){


                &#036;uploadedFile-&gt;saveAs(Yii::app()-&gt;basePath . '/&#46;&#46;/uploads/' . &#036;fileName);

}

            Yii::app()-&gt;user-&gt;setFlash(&quot;success&quot;, &quot;La solicitud de creó correctamente&quot;);


            &#036;this-&gt;redirect(array('view', 'id' =&gt; &#036;model-&gt;id_solicitud_de_pagina));


        }


    }





    &#036;this-&gt;render('create', array(


        'model' =&gt; &#036;model,


        'administrativos' =&gt; &#036;administrativos,


    ));


}

pon tu vista el controlador y el modelo así tal vez podamos encontrar el error mas facil

listo ya agregué la vista y el controlador, el modelo lo tengo tal cual me lo generó gii

No puedes rellenar ese campo, sería un problema de seguridad y los navegadores no lo permiten, obligatoriamente el usuario es el único que puede rellenarlo.

Haz la validación con ajax al pulsar el botón enviar y si esta todo bien envía el formulario.

Por cierto, bienvenido al foro, :)

gracias rahif, y exactamente ¿cómo haría eso? , tendría que crear un botón ajax o con ese mismo botón submmit que tengo

pones esto en true en el form


'enableAjaxValidation' => false,

y en el controlador des comentas lo siguiente


//$this->performAjaxValidation($model);

quedaría :





//en tu form

'enableAjaxValidation' => true,


// en tu controler en la respectiva action

$this->performAjaxValidation($model);




omarrandyk21 espero que tengas todo ok, por si acaso solo comentar,

La validación estándar de Yii es la que comenta erickMartinez, si te vale así perfecto.

Si quieres ver un uso más específico de ajax mira el siguiente enlace como una ayuda,

boton ajax

Un saludo