Problema con $model->attributes

Hola a todos, espero me puedan ayudar,

cuando intento hacer un update hago lo siguiente:




$model->attributes=$_POST['miModelo'];

$model->save();



Pero algunos campos no se copian a $model->attributes, quedan vacíos, imprimí el arreglo post y el arreglo model->attributes después de la asignación y solo en el arreglo post existe un valor para todos los campos pero en el arreglo $model->attributes no (no se copian)… para solucionar esto de forma rapida lo que hice fue esto:




$model->attributes=$_POST['miModelo'];

$model->campo_no_Copiado = $_POST['miModelo']["miCampoNoCopiado"];

$model->save();



y de esta forma ya se guardan los datos apropiadamente, pero quiero saber ¿por qué sucede esto? algunos de los campos son cammpos que no estaban inicialmente cuando generé el código por medio de gii, supongo que tengo que agregar alguna linea o algo para que tambien se tomen encuenta o algo asi…tienen alguna sugerencia??

Gracias.

Buenas,

Primero, mira a ver si tienes algún error en el modelo


print_r($model->getErrors(); 

De todas formas, si no se asignan los atributos es por que no tienen una regla. Cualquier atributo que no esté definido en el rules de su modelo de esa forma no se va a asignar.

Tenías razon chux, los campos que agregue no tenian una validacion en el rules, las agregue y ya se copian los datos…

Muchisimas gracias!

Saludos

Hay que tener cuidado con cuáles atributos se exponen para una asignación masiva: http://www.yiiframework.com/doc/guide/1.1/es/form.model#securing-attribute-assignments

Saludos!

Para un atributo virtual que no existe en la tabla del modelo correspondiente, si lo incluyo como safe, no aparece al ver print_r($model->attributes)

¿Cómo podría hacer para que apareciese en $model->attributes ?