Formulario Embebido Que No Pasa Por Beforelogin

Estimados,

Hace poco que estoy YII y me esta gustando mucho…

Les comento la situacion, tengo 2 tablas, ORDENES y HISTORIAL, cada orden puede tener muchos historiales, la idea es que cuando veamos una orden, en la misma pantalla pueda agregar un item al historial, entonces para ello hice lo siguiente:

En el archivo orden/view.php


<?php echo $this->renderPartial('../historial/_form', array('model'=>$hist,'estadoActual'=>$list[0]['id'])); ?>

En el archivo historial/_form.php he modificado lo siguiente:




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

	'id'=>'historial-form',

	'enableAjaxValidation'=>false,

	'action' => Yii::app()->createUrl('/historial/create'),



Indicandole la url del action.

El tema es que funciona, debido a que algunos campos no pueden estar vacios.


Array ( [orden_id] => Array ( [0] => Orden no puede ser nulo. ) [fecha] => Array ( [0] => Fecha no puede ser nulo. ) )

En el modelo de historial, he creado lo siguiente:




	protected function beforeSave(){

		if(parent::beforeSave()){

			if($this->isNewRecord){

				$this->fecha = new CDbExpression('NOW()');

				$this->usr_id = Yii::app()->user->id;

				$this->orden_id = "20";

			}

			return parent::beforeSave();

		}

		return parent::beforeSave();

	}



Pero sigue sin funcionar, alguien tiene idea de cual puede llegar a estar siendo el problema ?

Saludos y muchas gracias!

Lo primero es que si vas a utilizar un campo fecha y que la fecha sea la del momento en que se crear un registro, entonces lo recomendable es que sea un timestamp autocalculado (current_timestamp) …

Lo otro es que los campos fecha, user y order son campos requeridos en tu modelo… y antes de un save se hace inernamente un validate… y lo primero que se verifican son esas reglas… entonces lo que pasa es que tu codigo nunca llega beforeSave porque una validacion hace que todo el proceso se detenga…

No sé muy bien como tengas los campos en tus tablas… pero para este caso lo que deberias de hacer es quitar los campos fecha, user y order de la regla del required… y luego volver a probar.

Suerte

Tal cual como lo recomendaste, asi fue como lo solucione y funciona perfecto, quite el campo del required y luego en el aftersave les asigno su valor …

Perdon por no responder antes.

Saludos!