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: 69
  • 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,448
  • 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...
¿How long would it take for you to understand that you own nothing in this world?

www.ramirezcobos.com
www.2amigos.us
www.github.com/tonydspaniard
www.github.com/2amigos


Posted Image
0

#3 User is offline   Antonio Ramirez 

  • Elite Member
  • Yii
  • Group: Yii Dev Team
  • Posts: 1,448
  • 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...
¿How long would it take for you to understand that you own nothing in this world?

www.ramirezcobos.com
www.2amigos.us
www.github.com/tonydspaniard
www.github.com/2amigos


Posted Image
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,448
  • 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
¿How long would it take for you to understand that you own nothing in this world?

www.ramirezcobos.com
www.2amigos.us
www.github.com/tonydspaniard
www.github.com/2amigos


Posted Image
0

#6 User is offline   Antonio Ramirez 

  • Elite Member
  • Yii
  • Group: Yii Dev Team
  • Posts: 1,448
  • 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. ?
¿How long would it take for you to understand that you own nothing in this world?

www.ramirezcobos.com
www.2amigos.us
www.github.com/tonydspaniard
www.github.com/2amigos


Posted Image
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