Discussion And Questions On Ejuiautocompletefkfield

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

  1. unzip the extension into ../extensions/

  2. make sure config/main.php has:




import=>array(

          'application.extensions.*',

          ...

      ),



  1. 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'),

        );



  1. optional.

  2. 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>



  1. 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.

Hi I think You searching this