Yii Framework Forum: Los métodos setters no son ejecutados - Yii Framework Forum

Jump to content

Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

Los métodos setters no son ejecutados Necesito crear un override de __set() para que funcione los setters Rate Topic: -----

#1 User is offline   Nacesprin 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 82
  • Joined: 04-April 10
  • Location:San Fernando - Cadiz - Spain

Posted 30 July 2010 - 07:48 AM

Hola amigos.

Estoy intentado crear un método setter para mi modelo e intentar llamarlo desde mi controlador.

En el controlador:

$_model = $this->loadModel();
$_model->etnia = 19;
$_model->save();


En el fichero del modelo:

   protected function setEtnia()
   {
       Yii::trace("Test","file");        
   }


Así que el método setEtnia no es disparada cuando asigno 19 al campo "etnia". Lo he conseguido sólo si creo un override del método __set() dentro del fichero del modelo:


public function __set($name,$value)
    {
        $setter='set'.$name;
        if(method_exists($this,$setter))
        {
                $this->$setter();
        }
        parent::__set($name,$value);
    }


Entonces, setEtnia() sí se ejecuta.

Qué estoy haciendo mal?

Gracias.
0

#2 User is offline   Antonio Ramirez 

  • Elite Member
  • Yii
  • Group: Yii Dev Team
  • Posts: 1,461
  • Joined: 04-October 10

Posted 20 October 2010 - 04:16 PM

Has iniciado la propiedad que intentas asignar en la funcion 'rules' de tu modelo y definirla como 'safe'?

Dime si te funciona despues...
0

#3 User is offline   Antonio Ramirez 

  • Elite Member
  • Yii
  • Group: Yii Dev Team
  • Posts: 1,461
  • Joined: 04-October 10

Posted 20 October 2010 - 04:16 PM

Has iniciado la propiedad que intentas asignar en la funcion 'rules' de tu modelo y definirla como 'safe'?

Dime si te funciona despues...
0

#4 User is offline   PoL 

  • Advanced Member
  • PipPipPip
  • Yii
  • Group: Members
  • Posts: 506
  • Joined: 05-November 08
  • Location:Buenos Aires, Argentina

Posted 20 October 2010 - 04:29 PM

De donde herdas la clase??
Si la heredeas de CModel o CActiveRecord no tendrias que tener este problema...
Don't say what you think, think what you say
The problem is communication! Excess of communication!
0

#5 User is offline   Antonio Ramirez 

  • Elite Member
  • Yii
  • Group: Yii Dev Team
  • Posts: 1,461
  • Joined: 04-October 10

Posted 20 October 2010 - 04:37 PM

De todas formas tu metodo setEtnia no deberia tener un parametro?

Viendo el codigo de __set en la clase CComponent te tiene que dar una idea bastante clara de lo que ocurre.

Disculpa mi comentario anterior.

Un saludo
0

#6 User is offline   Antonio Ramirez 

  • Elite Member
  • Yii
  • Group: Yii Dev Team
  • Posts: 1,461
  • Joined: 04-October 10

Posted 20 October 2010 - 04:51 PM

Decirte que he creado tu metodo en mi modelo:

Public function setEtnia($val){
echo $val;
}

Y luego he llamado en el controlador:

$model->etnia='test';

Y funciona. ?
0

Share this topic:


Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

1 User(s) are reading this topic
0 members, 1 guests, 0 anonymous users