0

オートコンプリートで食品の名前を選択し、選択した食品の名前をオートコンプリートに表示し、選択した食品のカロリーを他のテキストフィールドに表示し、選択した食品の ID レコードをアクティブレコードでテーブルに表示します...

オートコンプリートで食品を選択することに成功し、他のテキストフィールドの食品のカロリーを入力しますが、この食品 ID をテーブルに記録しません。

私はテーブルを持っています, Yemekler このテーブルのフィールド; 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());
    }
}
4

1 に答える 1

1

私は2つの可能性を見ることができます:

  1. 送信ボタンをクリックした後のコントローラでは、SQL リクエストと送信された食品の名前を使用して食品 ID を取得します。
  2. オートコンプリートでは、食品の ID も返し、hidden field(javascript を使用して) に保存します。Controllerこれにより、 !で別のリクエストを実行する必要がなくなります。

使用したいオプションを教えてください。それに応じてコードを投稿します。

于 2013-11-12T11:07:47.220 に答える