Activerecord 活动记录,在文本字段中填入yii中的自动完成?

Activerecord 活动记录,在文本字段中填入yii中的自动完成?,activerecord,yii,autocomplete,Activerecord,Yii,Autocomplete,我想,我用autocomplete选择食物的名称,在autocomplete中显示选定食物的名称,在other textfield中显示选定食物的calory,在我的表格中用activerecord选择选定食物的id记录 我使用自动完成功能成功选择食物并填写其他textfield食物的计算,但我不会在我的表格中记录此食物id 我有一张桌子,Yemekler 此表的字段;我是耶梅卡迪·尼特利吉·卡洛里 当我点击提交按钮时,我想在我的数据库中记录所选食物的id。但表格会将食物的名称记录在案。由于该值

我想,我用autocomplete选择食物的名称,在autocomplete中显示选定食物的名称,在other textfield中显示选定食物的calory,在我的表格中用activerecord选择选定食物的id记录

我使用自动完成功能成功选择食物并填写其他textfield食物的计算,但我不会在我的表格中记录此食物id

我有一张桌子,Yemekler 此表的字段;我是耶梅卡迪·尼特利吉·卡洛里

当我点击提交按钮时,我想在我的数据库中记录所选食物的id。但表格会将食物的名称记录在案。由于该值不是整数,记录不成功

谢谢你的帮助

我的代码在下面

menu.php视图

<div class="row">
    <?php 
        echo $form->labelEx($model,'yemek1'); 
        $this->widget('zii.widgets.jui.CJuiAutoComplete', array(
            'model'=>$model->yemek1,
            'name'=>'Menu_yemek1',
            'source'=>$this->createUrl('kayit/autocompleteTest'),
            '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.kalori1);
                    return false;
                }",
            ),
            'htmlOptions'=>array(
                'size'=>'40'
            ),
        ));

        echo $form->error($model,'yemek1');
    ?>
</div>

<div class="row">
    <?php echo CHtml::textField('kalori1', '', array('id'=>'kalori1', 'disabled' => true)); ?>
</div> 

我可以看到两种可能性:

  • 在控制器中,单击submit按钮后,您将使用SQL请求和已提交的食物名称获取食物id
  • 在autocomplete中,您还可以返回食物的id,并将其存储在
    隐藏字段中(使用javascript)。这样,您就不必在
    控制器中执行另一个请求了
    请告诉我你想使用什么选项,我会相应地发布一些代码

    public function actionAutocompleteTest() {
        $res =array();
    
        if (isset($_GET['term'])) {
            $sql = 'SELECT yemekAdi as label, id as value, kalori as kalori1 FROM yemekler ';
            $sql = $sql . ' WHERE  niteligi=1 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());
        }
    }