[view] menu.php
<div class="row">
<?php echo $form->labelEx($model,'yemek1'); ?>
<?php
$this->widget('zii.widgets.jui.CJuiAutoComplete', array(
'model'=>$model->yemek1,
'name'=>'Menu[yemek1]',
'source'=>$this->createUrl('kayit/autocompleteTest'),
'id'=>'id',
'options'=>array(
'delay'=>300,
'minLength'=>1,
'showAnim'=>'fold',
'focus'=>'js:function( event, ui ) {
$( "#Menu_yemek1" ).val( ui.item.label );
return false;
}',
'select'=>"js:function(event, ui) {
$('#Menu_yemek1').val(ui.item.label);
$('#kalori1').val(ui.item.kalori);
return false;
}",
),
'htmlOptions'=>array(
'size'=>'40'
),
));
?>
<?php echo $form->error($model,'yemek1'); ?>
</div>
<div class="row">
<?php echo CHtml::textField('kalori1','',array('id'=>'kalori1','disabled' => true)); ?>
</div>
[controller] KayitController.php
public function actionAutocompleteTest1() {
$res =array();
if (isset($_GET['term'])) {
$sql = 'SELECT kalori as value, yemekAdi as label FROM yemekler ';
$sql = $sql . ' WHERE niteligi=2 and yemekAdi LIKE :label'; // Must be at least 1
$command =Yii::app()->db->createCommand($sql);
$command->bindValue(":label", '%'.$_GET['term'].'%', PDO::PARAM_STR);
echo json_encode ( $command->queryAll () );
}
}
yemekler tablomda
id yemekAdi niteligi ve kalori alanları mevcut.
istediğim şey autocomplete ile yemek adını seçtiğimde alttaki alana kalorisini yazması ve veritabanına id si ile kaydetmesi.
Bun kodlarla yemek seçimini ve kalori atamasını yapıyorum fakat kaydet butonuna bastığımda alanın sayı olması gerektiği uyarısını alıyorum. Yani yemeğin id si yerine yemekAdi değerini kaydetmeye çalışıyor.
$sql = 'SELECT kalori as kalori, yemekAdi as label, id as value FROM yemekler ';
şeklinde değiştirip denedim ama olmadı
Nasıl bir ekleme yapmam lazım?