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
InformationsquelleAutor tjeuten | 2012-09-17
Schreibe einen Kommentar