2013-11-12 3 views
0

Я хочу, я выбираю имя Фуда с автозаполнением и выбранным имя Пищевым показано в автозаполнениях и выбрано калорийность Пищевой показана в других TextField и выбрала Индентификационную пищу в моем столе с ActiveRecord ...Активная запись, заполнение текстового поля с автозаполнением в yii?

Я успешно выбрать продукты с автозаполнением и заполните другой калорий пищи в текстовом поле, но я не записываю этот идентификатор еды в свой стол.

У меня есть стол, Yemekler Поля этой таблицы; id yemekAdi niteligi kalori

Когда я нажимаю кнопку «Отправить», я хочу, чтобы выбранный идентификатор пищи был записан в моей базе данных. Но форму отправить название пищи для записи. Из-за значения не целого, запись не удалась.

Спасибо за помощь.

Мои коды на рисунке

зрения 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()); 
    } 
} 

ответ

1

можно видеть две возможности:

  1. В контроллере после нажав кнопку отправки yo u получите идентификатор питания с использованием запроса SQL и имени отправленного товара
  2. В автозаполнении вы также возвращаете идентификатор продукта и храните его в hidden field (используя javascript). Таким образом, вам не придется выполнять другой запрос в Controller!

Скажите, пожалуйста, какой вариант вы хотите использовать, я отправлю ему соответствующий код!

Смежные вопросы