zipzapduo
(Zipzapduo)
1
No controller:
$teclados = Teclado::model()->findAll();
$tecladosA = array();
foreach ($teclados as $value) {
$tecladosA[]=$value->brand."-".$value->model;
}
$this->render('view',array(
'model'=>$this->loadModel($id),
'teclados'=>$tecladosA,
));
view:
echo CHtml::checkBoxList('Teclados','Teclados',$teclados,
array(
'class'=>'RitmoTeclado_TecladoName',
));
Como posso pôr o id do modelo como value na checkboxlist para depois mandar por ajax?
Newerton
(Newerton Araujo)
2
zipzap,
Faz assim:
$teclados = Teclado::model()->findAll();
foreach ($teclados as $value) {
$tecladosA[$value->id]=$value->brand."-".$value->model;
}
$this->render('view',array(
'model'=>$this->loadModel($id),
'teclados'=>$tecladosA,
));
Assim você coloca o ID dentro array, assim o checkboxlist atribute este valor ao value do <option>
Ai depois para usar em ajax você pode fazer usando jQuery:
$('input#Teclados').live('click', function(){
alert($(this).val());
});
Ai você faz o teste ae.
zipzapduo
(Zipzapduo)
3
ok funciona mas agora como posso retornar na checkBoxList os valores que tenho na base de dados?
Eu tenho assim mas não funciona:
$tecladosSQL = RitmoTeclado::model()->findAllBySql("select teclado.idteclado from teclado inner join ritmo_teclado on (teclado.idteclado=ritmo_teclado.idteclado) where ritmo_teclado.idritmo =".$model->idritmo);
echo CHtml::checkBoxList('Teclados',$tecladosSQL->idteclado,$teclados,
array(
'class'=>'RitmoTeclado_TecladoName',
));
Newerton
(Newerton Araujo)
4
Você tem que colocar o resultado do seu Model em um array, senão o checkBoxList não vai reconhecer o que é valor ou texto.
Faz assim:
$tecladosSQL = RitmoTeclado::model()->findAllBySql("select teclado.idteclado from teclado inner join ritmo_teclado on (teclado.idteclado=ritmo_teclado.idteclado) where ritmo_teclado.idritmo =".$model->idritmo);
$list = CHtml::listData($tecladosSQL, 'idteclado', 'titulo');
echo CHtml::checkBoxList('Teclados',$tecladosSQL->idteclado,$list,
array(
'class'=>'RitmoTeclado_TecladoName',
));
zipzapduo
(Zipzapduo)
5
Não percebi muito bem o teu código.Tens skype ou messemger?
zipzapduo
(Zipzapduo)
7
Com
$list = CHtml::listData($tecladosSQL, 'idteclado', 'titulo');
não estou a devolver estes campos desta forma brand."-".model;
Newerton
(Newerton Araujo)
8
Cria no seu model(RitmoTeclado) a seguinte função:
public getTitulo(){
return $this->brand . '-' . $this->model;
}
Não tem como você concatenar texto diretamente no listData(), ele só aceita se existir uma função que faça isso.
zipzapduo
(Zipzapduo)
9
Qualquer coisa não bate certo.Eu tenho agora:
$tecladosSQL = Teclado::model()->findAllBySql("select teclado.idteclado from teclado inner join ritmo_teclado on (teclado.idteclado=ritmo_teclado.idteclado) where ritmo_teclado.idritmo =".$model->idritmo);
$list = CHtml::listData($tecladosSQL, 'idteclado', 'TecladoName');
echo CHtml::checkBoxList('Teclados',$tecladosSQL,$list,
array(
'class'=>'RitmoTeclado_TecladoName',
));
Criei o metodo na classe Teclado:
public function getTecladoName(){
return $this->brand.'-'.$this->model;
}
E tenho este erro:
Object of class Teclado could not be converted to int