system
(system)
1
I have a table
card_type char(3) primary key
dscp varchar(40)
pay_type char(1)
there is a statement in my controller before calling save method ( I put 2 var_dump to debug )
var_dump( $_POST['CardType'] );
$model->attributes=$_POST['CardType'];
var_dump( $model->attributes );
The first var_dump return
array(3) { ["card_type"]=> string(3) "ABC" ["dscp"]=> string(24) "Testing Testing 123" ["pay_type"]=> string(1) "D" }
and the second var_dump return
array(3) { ["pay_type"]=> string(1) "D" ["dscp"]=> string(24) "Testing Testing 123" ["card_type"]=> NULL }
It seems the assignment of "card_type" into the "attributes" not successful. Is it a bug? Thanks!
yoshi
(Jaschakoch)
2
Hi,
i think card_type is not an save attribute! Check whether you have rule for card_type in your rules() otherwise it would not be assigned massivly!
EDIT: My fault. I have overlooked that card_type is your primary key and this means it's definitly no safe attribute by default!
Greets
eval
(Zamanfoo)
3
system
(system)
4
Thanks…
Where should I modify the safeAttributes. CActiveRecord, CModel or CFormModel?
On the other hand, is it common practice of Yii is have an autoincrement 'id' for each table?
Regards,
steve
yoshi
(Jaschakoch)
5
Override safeAttributes() in your model class that extends CActiveRecord as described here: http://www.yiiframew…ute-assignments
Greets
system
(system)
6
Sorry I think I am a little bit stupid.
I put the following code in the end of CardType.php in models directory.
public functon safeAttributes()
{
return array(
parent::safeAttributes(),
/* 'create'=>'card_type, dscp, pay_type',
*/ );
}
But I have got a blank page now. (no matter I comment the code or not)
qiang
(Qiang Xue)
7
What Yii version are you using? what about removing the whole safeAttributes()?
yoshi
(Jaschakoch)
8
Hi,
it's 'public function' not 'public functon' or is this just an copy'n'paste error?!
But the much easier way would be just to make a single assignment for this attribute in your controller:
$model->attributes=$_POST['CardType'];
$model->card_type=$_POST['CardType']['card_type'];
Greets