• Willkommen im Zend Framework Forum

    ZF1 Zend Framework 1 + ZF2 Zend Framework 2

    Das Zend Framework Forum ist seit 2006 die erste Anlaufstelle für Zend Framework Entwickler in Deutschland. Mit über 70.000 Beiträgen und einer steigenden Nutzerzahl bietet das Forum hilfreiche Themen und ZF-Tutorials für professionelle Entwickler, fortgeschrittene Programmierer sowie Zend Framework Einsteiger.
    Wenn dies Dein erster Besuch in der Zend Framework Community ist, lies bitte zuerst die Hilfe - FAQ durch. Du musst Dich registrieren, bevor Du Beiträge verfassen kannst. Klicke oben auf 'Registrieren', um die Registrierung zu starten. Du kannst auch jetzt schon Beiträge lesen. Hier im Forum findest Du die Zend Framework Hilfe, die Du suchst!

    Grüße an alle Zend Framework Entwickler. Das Team vom Zend Framework Forum!

    Drupal Agentur

Form mit AJAX oder Jquery

FEAR

New member
Guten Tag die Damen und Herren,

ich hätte eine Frage bezüglich der Erstellung einer Form. Ich wollte gerne eine Form mit 4 Select Feldern erstellen. Das ist soweit auch kein Problem. Ich bekomme meine Felder mit Inhalt auch aus meiner Datenbank gefüllt. Jetzt wollte ich gerne wenn ich im Ersten Feld etwas auswähle das zweite Feld genau an die Auswahl angepasst wird.

Zum Beispiel:

  • Feld 1: Auswahl von Bundesländern
  • Feld 2: Auswahl von Städten
Wenn ich im ersten Feld nun Bayern auswählen soll aktualisiert das zweite Feld nur Städte in Bayern anzeigen und so weiter.

Jetzt weiß ich leider nicht wie ich der Form sagen kann das nach der ersten Auswahl ein aktualisieren des zweiten Feldes passieren soll. Ich geh mal davon aus, dass da AJAX oder Jquery im Spiel ist. Wenn da jemand Sachdienliche Hinweise(auch gerne mit Quellcode) hat nehme ich die gerne entgegen.

Mit freundlichen Grüßen
 

Blub?

New member
Hallo,

ich würde das mit JQuery und Json lösen (zumindest wenn es viele Städte sind, die z.B. in einer Datenbank hinterlegt sind). Den ersten Select ganz normal auf den Bundesländern lassen, dann jQuery.getJSON auf eine spezielle Action, z.B. jsonGetStaedteAction() und das JSON-Ergebnis in das neue select-Element einpflegen.

Doku und Beispiel mit getJson findest du hier: http://api.jquery.com/jQuery.getJSON/

Für die Action in deiner PHP Anwendung empfiehlt sich dieser Helper hier: Zend Framework

Noch ein kurzer Hinweis: wenn du das Firefox Plugin Firebug/Firephp hast, kann dir der Konsolen-Modus eine gute Kontroll-Hilfe sein. Kann natürlich sein, dass andere Browser ähnliches haben.

Gruss
Blub?

P.S.: Hoffe das hiflt dir weiter, da ich leider nicht genau ableiten kann, wie gut du Ajax und JQuery kannst. :)
 

Blub?

New member
Weil ich einen guten Tag habe...

PHP:
// application/controllers/name.php

    public function wohnortAction()
    {
        $this->view->form = new Application_Form_Wohnort();
    }

    public function ajaxwohnortAction()
    {
        $staedte = array('-' => array(),
                         'be' => array('Antwerpen', 'Bruegge', 'Bruessel', 'Gent'),
                         'de' => array('Berlin', 'Hamburg', 'Muenchen', 'Stuttgart'),
                         'en' => array('Glasgow', 'Manchester', 'Liverpool', 'London'));
        
        return $this->_helper->json($staedte[$this->getRequest()->getParam('land', '-')]);
    }
PHP:
// application/forms/Wohnort.php
class Application_Form_Wohnort extends Zend_Form
{
    public function init()
    {
        $land = new Zend_Form_Element_Select('land');
        $land->setLabel('Land:');
        $land->setMultiOptions(array(''=>'Bitte auswaehlen', 'be'=>'Belgien', 'de'=>'Deutschland', 'en'=>'England'));
        $land->setRequired(true);
        
        $stadt = new Zend_Form_Element_Select('stadt');
        $stadt->setLabel('Stadt:');
        $stadt->setMultiOptions(array(''=>'Bitte auswaehlen'));
        $stadt->setRequired(true);
        
        $submit = new Zend_Form_Element_Submit('submit');
    
        $this->setElements(array($land, $stadt, $submit));
    }
}
Code:
$(document).ready(function(){
    $('#land').change(function() {
        $('#stadt').empty();
        $.getJSON('http://adresse_zur_website/controllerName/ajaxwohnort/land/'+$(this).val(), { format: "json" }, function(data) {
            $.each(data, function() {
                $('#stadt').append('<option>' + this + '</option>');
            })
        });
    });
});
 

FEAR

New member
Danke für das ausführliche Beispiel, allerdings scheint die _helper-Funktion im Controller nicht zu funktionieren.

Könntest du mir evtl. Bücher empfehlen, wo solche Funktionen (o.ä.) genauer erläutert werden? - Irgendwo musst du das Wissen ja auch gelernt haben ;)
 

Blub?

New member
Oben