Em minha CustomerExtended - é uma Customer Active Record extended - tenho um atributo public chamado $notifications, que é setado no método afterConstruct:
class CustomerExtended extends Customer
{
public $notifications;
public function afterConstruct()
{
parent::afterConstruct();
$this->notifications = Array(
'customer_notify_new_sms',
'customer_notify_new_pokes',
'customer_notify_news_by_email',
'customer_notify_favorite_logged',
'customer_notify_finantial_response'
);
}
}
E Customer possui os seguintes atributos - são atributos concretos do banco de dados:
$customer = new Customer();
$customer->customer_notify_new_sms; // default is 1 on database
$customer->customer_notify_new_pokes; // default is 1 on database
$customer->customer_notify_news_by_email; // default is 1 on database
$customer->customer_notify_favorite_logged; // default is 1 on database
$customer->customer_notify_finantial_response; // default is 0 on database
Certo, eu preciso que o atributo $notification de CustomerExtended seja um array representando os atributos concretos - dos atributos correspondentes em Customer - para criar um checkboxlist.
Estou tentando encontrar uma solução, mas… Eu tentei isso:
$model = new CustomerExtended();
$form = new CActiveForm();
echo $form->checkBoxList($model, 'notifications',
Array(
'customer_notify_new_sms' => 'News by SMS',
'customer_notify_new_pokes' => 'Notify Pokes',
'customer_notify_news_by_email' => 'Notify by e-mail',
'customer_notify_favorite_logged' => 'Notify when favorite is logged',
'customer_notify_finantial_response' => 'Notify finantial reports'
)
);
Mas o resultado é errado, porque o atributo customer_notify_finantial_response é 0 no banco de dados e no checkboxlist esta vindo como checked por padrão.
Existe uma forma de fazer isso e fazer melhor?
Sou novo aqui e não posso postar imagens externas para exemplificar.