Cmenu Link: Update Specific Form

Buenas a todos! Espero que me podáis echar una manita con un problema que me esta sacando ya de quicio XD

Lo que estoy intentando hacer es reestructurar lo que viene siendo el aspecto visual de la página que viene por defecto en el yii, y es por eso que estoy utilizando el CMenu para colocar todas las opciones.

Así pues, he conseguido que en el formulario se cree un nuevo usuario (o al menos que haga la función de submit) con el siguiente código:


'onClick'=>'$("#personal-form").submit()', 'submit'=>'create')

Sin embargo no consigo que funcione para la función de ‘update’… He intendado con el mismo código pero nada. ¿Alguna sugerencia?

Muchas gracias!

Podría por favor, publicar el código de las vistas en cuestión? (Por defecto sería _form.php)… Adicionalmente, el controlador y el modelo no estaría de más.

Saludos.

Muchas gracias por contestar! Bien, el código del form es prácticamente el mismo que viene por defecto en el yii, aquí dejo la parte donde se puede ver el identificador:


<?php $form=$this->beginWidget('CActiveForm', array(

	'id'=>'personal-form',

	'htmlOptions' => array(

		'enctype' => 'multipart/form-data',

	),

	'enableAjaxValidation'=>false,

)); ?>

	<?php echo $form->errorSummary($model); ?>

A partir de aquí estan los diferentes campos para rellenar. Decir que he eliminado el botón de la parte inferior de submit, ya que como comento estoy colocando estos botones en la parte superior, dentro de los archivos de ‘create’ y ‘update’.

Bien, después si vamos al ‘update’ tenemos el CMenu definido de la siguiente manera:


$this->menu=array(

	array('label'=>'Actualizar Usuario', 'url'=>'#',

      'linkOptions'=>array('onClick'=>'$("#personal-form").submit($_POST["Personal"]))'),'submit'=>'actionUpdate()'),

);

?>

Y para el ‘create’ tengo definido el botón del siguiente modo:


array('label'=>'Crear Usuario', 'url'=>'#',

      'linkOptions'=>array('onClick'=>'$("#personal-form").submit()', 'submit'=>'create')),

El de modificar simplemente no hace nada, pero el de crear si que realiza el submit correspondiente y me crea el nuevo personal.

Si eso puedo subir también el controlador y el modelo, pero creo que básicamente el problema esta en el formulario, que no se exactamente como poder realizar un submit para que pueda enviar los datos a la BD.

Saludos!

Quiza es q no se que se pueda hacer asi pero no entiendo porque llamas a la action como una funcion

y ademas no le pasas el parametro id que suelen tener las actionsUpdate. Me podrias explicar esto, gracias.

En realidad lo que hice era una prueba para ver si funcionaba, pero como ya he comentado no es el caso. Así que de momento estoy igual. He probado a hacer la llamada pasando el parámetro del id, pero nada, simplemente vuelve a llamar a la misma página y no se guardan los cambios en la base de datos.

Seguiré buscando soluciones :P

EDIT


Bien, ya he encontrado la solución al problema y la verdad es que después de días y días peleándome con el código aquí tenéis la solución:

Para el botón de actualizar le colocamos dentro de las opciones de linkOtions le ponemos la opción de una clase, para después mediante un script recojamos la función de ese botón. Mejor mostrar el código :P


$this->menu=array(

	array('label'=>'Actualizar Usuario', 'url'=>'#',

			'linkOptions'=>array('class'=>'update-button')),

);


Yii::app()->clientScript->registerScript("update","

		$('.update-button').click(function(){

		$('#paciente-form').submit();

		});"

);

Lo que hace básicamente es ejecutar la función de submit del formulario, y sirve tanto para actualizar como para dar de alta :P Espero que os sirva!