Estoy haciendo un sistema sencillo donde se debe subir el curriculum vitae a cada persona en un formato de archivo (el mismo acepta formato Doc, PDF) donde tengo 3 tablas con los siguientes campos:
h**p://www.tiemponline.com/wp-content/uploads/2012/06/tablasdb.jpg
Cuando creo un registro con una persona nueva puedo cargar correctamente el archivo, pero cuando quiero actualizarlo no me sale el nombre del archivo en el campo "cv" dentro del formulario de actualización, por lo que al guardar (por ejemplo cambie el nombre solamente) me guarda el campo,donde va el curriculum (cv), vacío en la base de datos.
h**p://www.tiemponline.com/wp-content/uploads/2012/06/pantallaupdate.jpg
en personaController.php tengo las acciones Create y update con el siguiente codigo.
public function actionCreate()
{
$model=new Persona;
// Uncomment the following line if AJAX validation is needed
// $this->performAjaxValidation($model);
if(isset($_POST['Persona']))
{
$model->attributes=$_POST['Persona'];
$model->cv=CUploadedFile::getInstance($model,'cv');
if($model->save())
{
$model->cv->saveAs(Yii::getPathOfAlias('webroot').'/doc/'.$model->cv);
$this->redirect(array('view','id'=>$model->id));
}
}
$this->render('create',array('model'=>$model,));
}
/**
* Updates a particular model.
* If update is successful, the browser will be redirected to the 'view' page.
* @param integer $id the ID of the model to be updated
*/
public function actionUpdate($id)
{
$model=$this->loadModel($id);
// Uncomment the following line if AJAX validation is needed
// $this->performAjaxValidation($model);
if(isset($_POST['Persona']))
{
$model->attributes=$_POST['Persona'];
$model->cv=CUploadedFile::getInstance($model,'cv');
if($model->save())
$model->cv->saveAs(Yii::getPathOfAlias('webroot').'/doc/'.$model->cv);
$this->redirect(array('view','id'=>$model->id));
}
$this->render('update',array(
'model'=>$model,
));
}
en el modelo (Personas.php) tengo las siguientes rules:
public function rules()
{
// NOTE: you should only define rules for those attributes that
// will receive user inputs.
return array(
array('provincia_id, areaconocimiento_id', 'required'),
array('nombre', 'length', 'max'=>200),
array('dni, domicilio, cv', 'length', 'max'=>255),
array('localidad, conocimiento', 'length', 'max'=>45),
array('provincia_id, areaconocimiento_id', 'length', 'max'=>10),
// The following rule is used by search().
// Please remove those attributes that should not be searched.
array('id, nombre, dni, localidad, domicilio, cv, conocimiento, provincia_id, areaconocimiento_id', 'safe', 'on'=>'search'),
array('cv','file','types'=>'pdf,doc,docx','allowEmpty' => true,'on'=>'update'),
array('cv','file','types'=>'pdf,doc,docx','allowEmpty' => false,'on'=>'insert'),
);
}
y en la vista /personas/_Form.php tengo lo siguiente.
<div class="form">
<?php $form=$this->beginWidget('CActiveForm', array(
'id'=>'persona-form',
'enableAjaxValidation'=>false,
'htmlOptions' => array('enctype' => 'multipart/form-data'),
));?>
....
<div class="row">
<?php echo $form->labelEx($model,'cv'); ?>
<?php echo $form->fileField($model,'cv');?>
</div>
Agradecere cualquier ayuda, si es posible solucionar esto que ya tengo empezado he probado con plugins pero como soy nuevo en yii se me complica bastante.
adjunto lo que llevo hecho (en la carpeta DB esta el archivo para importar la base de datos).
muchas gracias por la ayuda!! alexis!
h**p://www.tiemponline.com/wp-content/uploads/2012/06/cv.zip