How To Fetch Multiple Fields

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?

Thank you in advance.