【问题标题】:Active Record, Fill The Textfield With Autocomplete in yii?活动记录,在 yii 中使用自动完成填充文本字段?
【发布时间】:2013-11-12 08:36:11
【问题描述】:

我想要,我选择带有自动完成功能的食物名称,选择的食物名称显示在自动完成中,选择的食物的卡路里显示在其他文本字段中,并在我的表中选择食物的 ID 记录,并使用 activerecord...

我通过自动完成成功选择了食物并填写了其他文本字段食物的卡路里,但我没有在我的表中记录这个食物 ID。

我有一张桌子,叶梅克勒 该表的字段; id yemekAdi niteligi kalori

当我点击提交按钮时,我想在我的数据库中选择食物的 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> 

KayitController.php 控制器

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());
    }
}

【问题讨论】:

    标签: activerecord yii autocomplete


    【解决方案1】:

    我可以看到两种可能性:

    1. 在控制器中单击提交按钮后,您会使用 SQL 请求获取食物 ID 和已提交食物的名称
    2. 在自动完成中,您还返回食物的 ID 并将其存储在 hidden field 中(使用 javascript)。这样您就不必在 Controller! 中执行另一个请求!

    请告诉我你想使用哪个选项,我会根据它发布一些代码!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-01
      • 2021-02-18
      • 1970-01-01
      • 2016-07-02
      相关资源
      最近更新 更多