Como saber si estoy en create o update?

Hola,

tengo otro problemilla, seguro que hay una manera mas sencilla de como yo quiero hacerlo.

Cuando un usuario se registra, he validado que no exista antes en la base de datos. El problema es que a la hora de modificar el usuario, me salta también la validación y no puedo modificarlo. Lo he conseguido validando si el registro tiene id, pero entonces, cuando creo un registro nuevo, a la hora de grabar, parece como si refrescara la página y me sale la validación. Solo aparece unos segundos y se redirecciona la página, pero claro, eso no queda bien. No se si la solución sería diferenciar de si estoy en create o en update, ¿me pueden ayudar?

Les pongo mi código:




public function rules()

{

	return array(

          .......

        array('USER_GESTOR','disponibility'),

          .....

        );

}


public function disponibility()

  {

    if($this->ID_USER) // Esta validación es para que pueda modificar

      return;


      $usuario=Usuario::model()->find(array(

          'select'=>'USER_GESTOR',

          'condition'=>'USER_GESTOR=:USER_GESTOR',

          'params'=>array(':USER_GESTOR'=>$this->USER_GESTOR),

      ));

      

      

      if($usuario!=null)

          $this->addError('USER_GESTOR','Usuario ya utilizado.');                

  }



Espero haya quedado clara mi duda.

Muchas gracias

Active Record tiene una propiedad que se llama isNewRecord

Tal vez te sirva…

No probaste con unique validator??

Sino verificá que el id de usuario sea el mismo que el que estas modificando.

Gracias Pol y Sebas,

Me funcionó con IsNewRecord. Pero aun así, me gustaría como saber si estoy en update o en create, porque dependiendo de un sitio u otro quiero que me aparezcan unos campos u otros.

Me imagino que tendré que controlar la Url, pero igual existe otra manera.

gracias por vuestra ayuda.

saludos

Si lo necesitas saber en el controlador es bastante facil (supongo que estás usando el código generado por gii o consola)

actionCreate(){

//es nuevo

}

actionUpdate(){

//estas moficando

}

Si estás dentro de la vista, ya te lo han dicho, dependiendo del valor de isNewRecord

Gracias chux,

ya lo conseguí, era en la vista donde tenía que validarlo.

Perdonad mi ignorancia.

Saludos