AutoVervollständigen anderen Feld mit Yii CJuiAutoComplete
Ich habe folgende situation:
Formular mit einem Feld für Postleitzahlen, und ein Feld für die Städte.
Möchte ich ein autocomplete auf das Feld PLZ, so dass, wenn der Benutzer zum Beispiel 1000, die AutoVervollständigen-Werte zeigen "1000 - Brüssel". Wenn dieser Wert wird dann ausgewählt, 1000 gefüllt wird, in das PLZ-Feld und Brüssel gefüllt wird, in das Feld Stadt.
PLZ, die Stadt und die verketteten Daten kommen aus einer mysql-Datenbank:
Habe ich das AutoVervollständigen funktioniert nur mit der postalcodes, aber habe keine Ahnung, wie die Umsetzung der beschriebene Effekt (= füllen ein zweites Feld).
Aktuellen Formular-code:
<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>
Aktuellen controller-action-code:
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();
}
Nicht sicher, ob der controller-Aktion ist völlig korrekt, die $Befehl->queryAll() scheint nicht zu funktionieren also ich benutze queryColumn() statt, aber es gibt nur die erste Spalte ?
Irgendwelche Tipps ?
Zudem zusätzliche Frage, ich würde gerne den link zu der controller-Aktion-Dynamik. Wenn die in einer früheren Land-dropdown der Benutzer ausgewählt hat Belgien dann den Anruf gemacht werden sollte, um 'BeCity/GetBelgianPostalCodes'. Wenn es Frankreich war, es sollte sein, 'FrCity/GetFrenchPostalCodes'. Ist das möglich, und wie ?
Dank
- können wir den code sehen für Ihre CJuiAutoComplete widget?
- Zusätzlicher code Hinzugefügt. Sorry, ich habe die ursprüngliche Frage von gestern Abend, aber ich war etwas in Eile, so war es "quick and dirty" 🙂 Hoffe es ist klarer jetzt
Du musst angemeldet sein, um einen Kommentar abzugeben.
Setzen die Ajax-option wie folgt:
Hier die Möglichkeit, die ich gefunden (ich einstellen, für Ihre Anwendung, so hoffe ich, kein Tippfehler...) ich habe auch den Namen des widgets zu myPostCode besten würde wahrscheinlich behalten die default-name von Yii :
Müssen Sie auch ändern Sie Ihre Abfrage, um alle Daten