I try to auto fill two fileds from the foreign key table in the matching the auto-complete word. But i can’t fill the auto complete value
My scenario is, when i type the product name, i need to fetch id and price of a product from the product table and set the id for the product name and set price in another html input.
Here is my code
- 
unzip the extension into ../extensions/
 - 
make sure config/main.php has:
 
import=>array(
          'application.extensions.*',
          ...
      ),
- ensure the relationship exists in the model:
 
'relations'=>return array(
                        'soNo' => array(self::BELONGS_TO, 'SoMaster', 'so_no'),
                        'prod_name' => array(self::BELONGS_TO, 'ProductMaster', 'prod_id'),
                        //'prodPrize' => array(self::BELONGS_TO, 'ProductMaster', 'prod_price'),
        );
- 
optional.
 - 
in the _form.php for the main record
 
<div class="row">
                <?php //echo $form->labelEx($so_model,'prod_id'); ?>
                <?php //echo $form->textField($so_model,'prod_id',array('size'=>10,'maxlength'=>10)); ?>
                <?php 
// echo $form->error($so_model,'prod_id');
                
                echo $form->labelEx ( $so_model, 'prod_id' );
                $this->widget ( 'EJuiAutoCompleteFkField', array (
                                'model' => $so_model,
                                'attribute' => 'prod_id', // the FK field (from CJuiInputWidget)
                                                        // controller method to return the autoComplete data (from CJuiAutoComplete)
                                                        // 'sourceUrl'=>'index.php?r=productMaster/productName',
                                'sourceUrl' => Yii::app ()->createUrl ( '/soDetail/productName' ),
                                // defaults to false. set 'true' to display the FK field with 'readonly' attribute.
                                'showFKField' => true,
                                // display size of the FK field. only matters if not hidden. defaults to 10
                                'FKFieldSize' => 15,
                                'relName' => 'prod_name', // the relation name defined above
                                'displayAttr' => 'ProductIdAndPrice', // attribute or pseudo-attribute to display
                                                                    // length of the AutoComplete/display field, defaults to 50
                                'autoCompleteLength' => 60,
                                // any attributes of CJuiAutoComplete and jQuery JUI AutoComplete widget may
                                // also be defined. read the code and docs for all options
                                'options' => array (
                                                // number of characters that must be typed before
                                                // autoCompleter returns a value, defaults to 2
                                                'minLength' => 1 ,
                                                'onclick' =>'productidvalue();'
                                ) 
                ) );
                echo $form->error ( $so_model, 'prod_id' );
                ?>
        </div>
        <div class="row">
  <?php echo $form->labelEx($so_model,'prod_price'); ?>
   <?php echo $form->textField($so_model,'prod_price',array('size'=>50,'maxlength'=>50,'id'=>'product_price')); ?>
  <?php echo $form->error($so_model,'prod_price'); ?>
 </div>
- in the Controller for the model, create a method to return the autoComplete data. NOTE: make sure to give users the correct permission to execute this method, according to your security scheme
 
public function actionProductName() {
                $q = $_GET ['term'];
                if (isset ( $q )) {
                                
                        $criteria = new CDbCriteria;
                                
                        
                        $criteria->select = array('prod_name, prod_id, prod_price');
                                
                        $criteria->addSearchCondition('prod_name',  $_GET['term'] ) ;
                        $productId = ProductMaster::model()->findAll($criteria);
                                
                        if (!empty($productId)) {
                                $out = array();
                                foreach ($productId as $p) {
                                        //Yii::trace($p, 'application');
                                        //Yii::log($p->prod_price, CLogger::LEVEL_ERROR, 'Message Here...');
                                        //$log = Yii::getLogger($p->prod_price);
                                        $out[] = array(
                                                        'label' => $p->prod_name,
                                                        'value' => $p->prod_name,
                                                        'id' => $p->prod_id, // return value from autocomplete
                                        );
                                }
                                echo CJSON::encode($out);
                                Yii::app()->end();
                        }
        
The above code works if i retrieve prod_id and prod_price seprately.
I can’t able to send both values.
Is it possible to set product price for the text box?
Thanks in advance.