我遇到以下情況:自動完成與Yii的其他字段CJuiAutoComplete
表單中包含郵政編碼字段和城市字段。
我想在郵政編碼字段上自動填充,因此當用戶鍵入實例1000時,自動填充值將顯示「1000 - 布魯塞爾」。當選擇此值時,1000將被填入郵政編碼字段中,而布魯塞爾將被填入城市字段中。
郵編,城市和關聯信息會從MySQL數據庫:
我已經自動完成只用postalcodes工作,但對如何實現所描述的效果不知道(=填充第二場)。
當前表單代碼:
<div class="row">
<?php echo $form->labelEx($model,'PostalCode'); ?>
<?php //echo $form->textField($model,'PostalCode',array('size'=>10,'maxlength'=>50));
$this->widget('zii.widgets.jui.CJuiAutoComplete', array(
'name'=>'PostalCode',
'value'=>$model->PostalCode,
//'source'=>$people, // <- use this for pre-set array of values
'source'=>$this->createUrl('BeCity/GetBelgianPostalCodes'),// <- path to controller which returns dynamic data
// additional javascript options for the autocomplete plugin
'options'=>array(
'minLength'=>'1', // min chars to start search
'showAnim'=>'fold'
),
));
?>
<?php echo $form->error($model,'PostalCode'); ?>
</div>
電流控制器動作代碼:
public function actionGetBelgianPostalCodes()
{
$res =array();
if (isset($_GET['term'])) {
// http://www.yiiframework.com/doc/guide/database.dao
$qtxt ="SELECT
DISTINCT
bc.PostalCode as PostalCode,
bc.NameNL as CityName,
CONCAT(bc.PostalCode, ' - ', bc.NameNL) as FullCityName
FROM be_city bc
WHERE bc.PostalCode LIKE :qterm
ORDER BY bc.PostalCode, bc.NameNL ASC";
$command =Yii::app()->db->createCommand($qtxt);
$command->bindValue(":qterm", $_GET['term'].'%', PDO::PARAM_STR);
$res =$command->queryColumn();
}
echo CJSON::encode($res);
Yii::app()->end();
}
不知道,如果控制器動作是完全正確的,在$命令 - > queryAll()似乎不工作,所以我使用queryColumn()來代替,但它只返回第一列?
任何提示?
另外,還有一個問題,我希望控制器動作的鏈接是動態的。如果在之前的國家/地區下拉選擇比利時,則應該調用「BeCity/GetBelgianPostalCodes」。如果是法國,應該是'FrCity/GetFrenchPostalCodes'。這是可能的,以及如何?
感謝
我們可以看到您的CJuiAutoComplete小部件的代碼嗎? – Stu
添加了附加代碼。對不起,我昨天晚上發佈了原始問題,但我有點匆忙,所以它是「快速和骯髒」:-)希望現在更清楚 – tjeuten