turk porno porno escort rokettube
Ergebnis 1 bis 20 von 20

Thema: Tutorial für "Land" -> "Region" -> "Stadt" - Dropdown Formular aus MySql DB

  1. #1
    Benutzer
    Registriert seit
    11.11.2010
    Beiträge
    77
    Thanks
    9
    Thanked 0 Times in 0 Posts

    Frage Tutorial für "Land" -> "Region" -> "Stadt" - Dropdown Formular aus MySql DB

    Hallo,

    Ich bin Neuling was das ZF betrifft. Bestätigt dadurch dass ich bereits bei "einfachen" Sachen scheitere .

    So suche ich seit rund 10 Stunden ich im WWW nach einem brauchbaren oder funktionierenden Tutorial, welches mir zeigt, wie ich via Zend_Form und AJAX / jQuery / Dojo ein abhängiges Dropdown erstelle. (also via dropdown feld, Land auswählen - zweites Dropdown Feld, zeigt die verfügbaren Regionen an, auswählen und die Städte der Region werden angezeigt.

    Hier im Forum bin ich nicht fündig geworden und das www schlägt folgendes vor:
    So richtig kann ich das Ganze nicht verstehen. Auch ein Tutorial welches mal auf der Zend Seite selbst war, existiert nicht mehr (Link ganz unten: http://www.mail-archive.com/fw-gener.../msg20879.html).

    Wenn mir jemand einen Ansatz bzw. Hinweis (Link, Snippet oder was auch immer) geben kann, wie ich das angehe ohne die Seite neu laden zu müssen und zeitgleich meinen Verstand behalte wäre ich schon super, super dankbar.


    Jan
    ZF 1.11
    Zend Server Community Edition
    Zend Studio 8
    MAC OSX 10.6

  2. #2
    Super-Moderator Avatar von Kaiuwe
    Registriert seit
    30.12.2006
    Beiträge
    5.520
    Thanks
    4
    Thanked 356 Times in 287 Posts

    Standard

    Zitat Zitat von klangfeld Beitrag anzeigen
    Wenn mir jemand einen Ansatz bzw. Hinweis (Link, Snippet oder was auch immer) geben kann, wie ich das angehe ohne die Seite neu laden zu müssen und zeitgleich meinen Verstand behalte wäre ich schon super, super dankbar.
    Dazu benötigt man doch keine Anleitung, sondern nur einige (einfache) Vorüberlegungen.

    Davon mal abgesehen, würde ich es erstmal ohne JavaScript umsetzen, denn das stellt doch kein Problem dar:
    • Ein Formular mit Zend_Form erstellen und Auswahlliste mit Ländern hinzufügen.
    • Wird das Formular mit ausgewählten Land abgesendet, dann fügt man eine zweite Auswahlliste zum „Zend_Form“-Formular hinzu, welches die Regionen beinhaltet.
    • Wird das Formular mit ausgewählten Land und Region abgesendet, dann kommt die Auswahlliste mit den Städten hinzu.

    Das Ganze mit einfachen „if“-Abfragen ist doch kein Schmerz.

    Wenn du dies hast, kann man die Sache mit JavaScript angehen, denn eine entsprechende Vorlage/Unterbau hast du dann schon da.
    Zum Zend Framework stehen jedem folgende Quellen zum Nachschlagen zur Verfügung:

  3. #3
    Benutzer
    Registriert seit
    11.11.2010
    Beiträge
    77
    Thanks
    9
    Thanked 0 Times in 0 Posts

    Standard

    Hallo Kaiuwe,

    danke dass Du Dich meiner annimmst.

    Verstehe ich Dich richtig? Du schlägst vor, das ausgefüllte Formular soll einfach abgesendet werden. Wenn es wieder angezeigt wird (mit all seinen Parametern) kommt das Regionsfeld HINZU, wieder auf absenden klicken und das Feld Städte kommt hinzu.

    Wenn das dann so funktioniert, kann man es nachträglich ver-javascripten???

    Bitte korrigiere mich wenn ich falsch liege...
    ZF 1.11
    Zend Server Community Edition
    Zend Studio 8
    MAC OSX 10.6

  4. #4
    Super-Moderator Avatar von Kaiuwe
    Registriert seit
    30.12.2006
    Beiträge
    5.520
    Thanks
    4
    Thanked 356 Times in 287 Posts

    Standard

    Zitat Zitat von klangfeld Beitrag anzeigen
    Wenn das dann so funktioniert, kann man es nachträglich ver-javascripten???
    Klar, denn mit JavaScript überspringst du die beiden Schritte des Absendens und Hinzufügen von Auswahllisten. Die Prüfung bleibt die Gleiche, nur das beim ersten tatsächlichen Absenden für „Zend_Form“ alle Werte von Land, Region und Stadt schon da sind.
    Zum Zend Framework stehen jedem folgende Quellen zum Nachschlagen zur Verfügung:

  5. #5
    Super-Moderator Avatar von Kaiuwe
    Registriert seit
    30.12.2006
    Beiträge
    5.520
    Thanks
    4
    Thanked 356 Times in 287 Posts

    Standard

    Hier noch einen Hinweis zum Ansetzen: Erweitere die Methode „isValid“ deines Formulars, denn dort kannst du prüfen ob das Land ausgewählt und korrekt ist und dann die nächste Auswahlliste anheften.
    Zum Zend Framework stehen jedem folgende Quellen zum Nachschlagen zur Verfügung:

  6. #6
    Benutzer
    Registriert seit
    11.11.2010
    Beiträge
    77
    Thanks
    9
    Thanked 0 Times in 0 Posts

    Standard Nochmal nachhaken

    In meinem Controller habe ich folgendes:
    PHP-Code:
        public function registerAction()
        {
            
    $this->form $this->form->UserRegisterForm();
            
    /**
             * 
             */
            
    if ($this->_request->isPost()) {
                
    $formData $this->_request->getPost();
                if (
    $this->form->isValid($formData)) {
                    echo 
    'success';
                    exit();
                } else {
                    
    $this->form->populate($formData);
                }
            }
            
    $this->view->form $this->form;
        } 
    Mein Model UserRegisterForm welches mir das Formular erstellt, empfängt zwei Parameter (regionID und cityID).
    Zuerst überprüft das Model, ob die regionID da ist, wenn ja fügt es mir das RegionFeld mit den Daten hinzu.
    Dasselbe gilt dann für das CityFeld.

    Ist dieses Vorgehen richtig?
    ZF 1.11
    Zend Server Community Edition
    Zend Studio 8
    MAC OSX 10.6

  7. #7
    Super-Moderator Avatar von Kaiuwe
    Registriert seit
    30.12.2006
    Beiträge
    5.520
    Thanks
    4
    Thanked 356 Times in 287 Posts

    Standard

    Zitat Zitat von klangfeld Beitrag anzeigen
    Mein Model UserRegisterForm welches mir das Formular erstellt, empfängt zwei Parameter (regionID und cityID).
    Zuerst überprüft das Model, ob die regionID da ist, wenn ja fügt es mir das RegionFeld mit den Daten hinzu.
    Dasselbe gilt dann für das CityFeld.
    Um die Regionen zu erhalten, brauchst du doch erstmal das Land.
    Zum Zend Framework stehen jedem folgende Quellen zum Nachschlagen zur Verfügung:

  8. #8
    Benutzer
    Registriert seit
    11.11.2010
    Beiträge
    77
    Thanks
    9
    Thanked 0 Times in 0 Posts

    Standard Das habe ich bereits

    Die "Länder als Array aus der Datenbank" habe ich bereits in die Funktion CountryList gepackt, welche sich in meinem "UserRegistrationForm" Model befindet.
    Im Moment probiere ich das so:

    Hinweis: Script ist Baustelle!
    PHP-Code:
    class Core_Model_Forms extends Zend_Form
    {

    //.........

       
    public function UserRegisterForm($countryId 'NULL'$regionId 'NULL')
        {
            
    //instanziere Länder und Regionen Service
            
    $country = new Core_Service_Locator();
            
    //Hole Länder Liste als Array (id => name)
            
    $countryList $country->CountryListNormal();
            
    // Hole das UserRegistration Formular aus der INI (incl allen Validatoren)
            
    $form $this->GetForm('user''register');
            
    //füge die countryList dem Formular hinzu
            
    $form->country->addMultiOptions($countryList);
            
    //wenn die regionID noch NULL ist, dann zeige keine Region an.
            
    if (!$regionId NULL) {
                
    //wenn regionID existiert dann hole via CountryID die zugehörigen Regionen
                
    $regionList $country->RegionList($countryId);
                
    // Füge die Regionen dem Formular hinzu
                
    $form->region->addMultiOptions($regionList);
            }
            return 
    $form;
        }



    Ich hoffe ich bin nicht auf dem Holzweg...
    ZF 1.11
    Zend Server Community Edition
    Zend Studio 8
    MAC OSX 10.6

  9. #9
    Super-Moderator Avatar von Kaiuwe
    Registriert seit
    30.12.2006
    Beiträge
    5.520
    Thanks
    4
    Thanked 356 Times in 287 Posts

    Standard

    Zitat Zitat von klangfeld
    PHP-Code:
    //wenn die regionID noch NULL ist, dann zeige keine Region an. 
    Wenn kein Land gewählt ist, dann können auch keine Regionen angezeigt werden. Es muss doch erst ein Land ausgewählt werden, bevor die Regionen ausgelesen werden können.
    Hast du eine Region, dann kannst du die dazugehörigen Städte anzeigen.
    Zum Zend Framework stehen jedem folgende Quellen zum Nachschlagen zur Verfügung:

  10. #10
    Benutzer
    Registriert seit
    11.11.2010
    Beiträge
    77
    Thanks
    9
    Thanked 0 Times in 0 Posts

    Standard Bis jetzt funktioniert alles wie geplant, wie gehts weiter? :-)

    Länder werden angezeigt.
    Man wählt aus. klickt absenden
    Regionen werden angezeigt.
    Man wählt Region und klickt auf absenden
    Städte werden angezeigt

    (siehe Video -> http://www.webdesign-solution.eu/for...pdownszend.mov)

    Wie soll ich weiter verfahren? ;-)
    Ich denke mal jetzt kommt (oh weh, oh weh) JavaScript dran.. :-(
    da kenn ich mich nämlich NULL aus...



    Falls es wer brauchen kann:

    Mein Stadt_Region_Land_Model sieht so aus:
    PHP-Code:
        /**
         * lädt Liste mit Ländern
         * @return Array...
         */


        
    public function CountryList()
        {
            
    $select $this->countryTable->select()->order('country ASC');
            
    $countries $this->countryTable->fetchAll($select);
            
    $count count($countries);
            
    $array = array(
                
    '' => 'Choose a Country');
            foreach (
    $countries as $item) {
                
    $array[$item['CountryId']] = $item['Country'];
            }
            return 
    $array;
        }


        
    /**
         * 
         * Creates a array with Regions...
         * @param unknown_type $array
         */
        
    public function RegionList($countryId 'NULL')
        {
           
            
    $select $this->regionTable->select()->where('CountryID = ?'
            
    $countryId)->order('Region ASC');
            
    $regions $this->regionTable->fetchAll($select);
            
    $count count($regions);
            
    $array = array(
                
    '' => 'Choose a Region');
            
            foreach (
    $regions as $item) {
                
    $array[$item['RegionID']] = $item['Region'];
            }
            return 
    $array;
        }
        
        
    /**
         * 
         * Creates a array with cities...
         * @param unknown_type $array
         */
        
    public function CityList($regionId 'NULL')
        {
            
    $select $this->cityTable->select()->where('RegionID = ?'
            
    $regionId)->order('City ASC');
            
    $cities $this->cityTable->fetchAll($select);
            
    $count count($cities);
            
    $array = array(
                
    '' => 'Choose a City');
            
            foreach (
    $cities as $item) {
                
    $array[$item['CityId']] = $item['City'];
            }
            return 
    $array;
        } 
    Das UserRegistrationForm beinhaltet dies:

    PHP-Code:
     public function UserRegisterForm($countryId 'NULL'$regionId 'NULL')
        {
            
    //instanziere Länder und Regionen Service
            
    $locator = new Core_Service_Locator();
            
    //Hole Länder Liste als Array (id => name)
            
    $countryList $locator->CountryList();
            
    // Hole das UserRegistration Formular aus der INI (incl allen Validatoren)
            
    $form $this->GetForm('user''register');
            
    //füge die countryList dem Formular hinzu
            
    $form->country->addMultiOptions($countryList);
            
    //wenn die regionID noch NULL ist, dann zeige keine Region an.
            
    if ($countryId) {
                
    //wenn countryID existiert dann hole via CountryID die zugehörigen Regionen
                
    $regionList $locator->RegionList($countryId);
                
    // Füge die Regionen dem Formular hinzu
                
    $form->region->addMultiOptions($regionList);
            }
            ;
            if (
    $regionId) {
                
    //wenn regionID existiert dann hole via regionID die zugehörigen cities
                
    $cityList $locator->CityList($regionId);
                    
    // Füge die cities dem Formular hinzu
                    
    $form->city->addMultiOptions($cityList);
            }
            ;
            return 
    $form;
        } 
    Und der Controller handelt so:

    PHP-Code:
      public function registerAction()
        {
            
            
    $countryID $this->getRequest()->getParam('country');
            
    $regionID $this->getRequest()->getParam('region');

            
            
    $this->form $this->form->UserRegisterForm($countryID$regionID);
            
    /**
             * 
             */
            
    if ($this->_request->isPost()) {
                
    $formData $this->_request->getPost();
                if (
    $this->form->isValid($formData)) {
                    echo 
    'success';
                    exit();
                } else {
                    
    $this->form->populate($formData);
                }
            }
            
    $this->view->form $this->form;
        } 
    ZF 1.11
    Zend Server Community Edition
    Zend Studio 8
    MAC OSX 10.6

  11. #11
    Benutzer
    Registriert seit
    11.11.2010
    Beiträge
    77
    Thanks
    9
    Thanked 0 Times in 0 Posts

    Standard

    Darf ich nochmal fragen mit welcher Komponente ich weiterarbeiten soll bezüglich meinem Problem?

    Zend_Json?
    Zend_Dojo?

    Ein kleiner Ansatz wäre sehr hilfreich! Danke!
    ZF 1.11
    Zend Server Community Edition
    Zend Studio 8
    MAC OSX 10.6

  12. #12
    Super-Moderator Avatar von Kaiuwe
    Registriert seit
    30.12.2006
    Beiträge
    5.520
    Thanks
    4
    Thanked 356 Times in 287 Posts

    Standard

    Zitat Zitat von klangfeld Beitrag anzeigen
    Darf ich nochmal fragen mit welcher Komponente ich weiterarbeiten soll bezüglich meinem Problem?

    Zend_Json?
    Zend_Dojo?
    Davon brauchst du erstmal nichts (direkt), denn die „JSON“-Ausgabe erfolgt später per „Action“-Helfer und Anfänger sind der Meinung, jQuery ist einfacher als Dojo.
    Zuvor lade dir jQuery und binde es im Layout ein. Geht auch per „ZendX-JQuery“. Hier gibt es sogar eine Ressource für „Zend_Application“, welche sogar vorbildlich im Quellcode dokumentiert ist. (Leider noch nicht in der API-Doku enthalten.)

    Dann stehen dir wieder zwei Möglichkeiten zur Verfügung:


    Wenn du soweit bist, dann einfach wieder melden.
    Zum Zend Framework stehen jedem folgende Quellen zum Nachschlagen zur Verfügung:

  13. #13
    Benutzer
    Registriert seit
    11.11.2010
    Beiträge
    77
    Thanks
    9
    Thanked 0 Times in 0 Posts

    Standard Vielen Dank einstweilen

    werde mal 1-2 Tage jetzt tüfteln. Komme gerne auf dein Angebot zurück! :-)
    ZF 1.11
    Zend Server Community Edition
    Zend Studio 8
    MAC OSX 10.6

  14. #14
    Super-Moderator Avatar von Kaiuwe
    Registriert seit
    30.12.2006
    Beiträge
    5.520
    Thanks
    4
    Thanked 356 Times in 287 Posts

    Standard

    Zitat Zitat von klangfeld Beitrag anzeigen
    werde mal 1-2 Tage jetzt tüfteln. Komme gerne auf dein Angebot zurück! :-)
    Schreibe dir einen Ablaufplan, dann weißt du auch, nach was du in der jQuery-Hilfe suchen musst.
    Zum Zend Framework stehen jedem folgende Quellen zum Nachschlagen zur Verfügung:

  15. #15
    Benutzer
    Registriert seit
    11.11.2010
    Beiträge
    77
    Thanks
    9
    Thanked 0 Times in 0 Posts

    Standard

    Soweit hab ich das jetzt (denk ich mal)

    Ich habe das jQuery Script in das Layout integriert:

    PHP-Code:
    <script type="text/javascript" src="http://global/js/jquery/js/jquery-1.4.4.min.js"></script> 
    in meiner Bootstrap habe ich auch den ViewHelper integriert
    PHP-Code:
            //instanziert jQuery
            
    $view->addHelperPath('ZendX/JQuery/View/Helper/'
            
    'ZendX_JQuery_View_Helper');
            
    ZendX_JQuery::enableView($view); 
    Das wars eigentlich - setUp-technisch?!
    ZF 1.11
    Zend Server Community Edition
    Zend Studio 8
    MAC OSX 10.6

  16. #16
    Super-Moderator Avatar von Kaiuwe
    Registriert seit
    30.12.2006
    Beiträge
    5.520
    Thanks
    4
    Thanked 356 Times in 287 Posts

    Standard

    Zitat Zitat von klangfeld Beitrag anzeigen
    Ich habe das jQuery Script in das Layout integriert:

    PHP-Code:
    <script type="text/javascript" src="http://global/js/jquery/js/jquery-1.4.4.min.js"></script> 
    Wenn du schon die „ZendX-JQuery“ initialisierst, dann nutze diese doch auch im Layout-Skript:
    PHP-Code:
    echo $this->jQuery(); 
    und in deiner Bootstrap-Klasse:
    PHP-Code:
    $view->jQuery()->setLocalPath('js/jquery-1.5.1.min.js')->enable(); 
    Zum Zend Framework stehen jedem folgende Quellen zum Nachschlagen zur Verfügung:

  17. #17
    Benutzer
    Registriert seit
    11.11.2010
    Beiträge
    77
    Thanks
    9
    Thanked 0 Times in 0 Posts

    Standard Das war mein Ansatz

    Das habe ich im ersten Versuch auch probiert. Jedoch konnte ich den baseUrl Path von der Bootstrap aus nicht auslesen. SOndern nur im Layout selbst..
    ZF 1.11
    Zend Server Community Edition
    Zend Studio 8
    MAC OSX 10.6

  18. #18
    Super-Moderator Avatar von Kaiuwe
    Registriert seit
    30.12.2006
    Beiträge
    5.520
    Thanks
    4
    Thanked 356 Times in 287 Posts

    Standard

    Zitat Zitat von klangfeld Beitrag anzeigen
    Jedoch konnte ich den baseUrl Path von der Bootstrap aus nicht auslesen.
    Fehlermeldung?
    Schau auch mal in den Quelltext des „baseUrl“-Helfers rein, dann wirst du sehen, das dieser nur auf den Front-Kontroller zurückgreift.
    Zum Zend Framework stehen jedem folgende Quellen zum Nachschlagen zur Verfügung:

  19. #19
    Benutzer
    Registriert seit
    11.11.2010
    Beiträge
    77
    Thanks
    9
    Thanked 0 Times in 0 Posts

    Standard BaseUrl endlich da

    hab nun - wie von Dir vorgeschlagen - alles in die Bootstrap gepackt:

    PHP-Code:
       protected function _initViewHelpers()
        {
            
    // instanziert das Layout
            
    $this->bootstrap('layout');
            
    $layout $this->getResource('layout');
            
    $view $layout->getView();
            
    //instanziert jQuery
            
    $view->addHelperPath('ZendX/JQuery/View/Helper/'
            
    'ZendX_JQuery_View_Helper');
            
    $baseurl Zend_Controller_Front::getInstance()->getBaseUrl();
            
    $view->jQuery()->setLocalPath($baseurl'js/jquery-1.5.1.min.js')->enable();
            
    ZendX_JQuery::enableView($view);
        } 
    und für den Fall, dass es mal deaktiviert ist folgendes in mein Layout gesteckt:
    PHP-Code:
    <?php
    // function for jQuery
    if ($this->jQuery()->isEnabled()) {
        echo 
    $this->jQuery();
    }
    ?>
    Kann ich nun mit jQuery loslegen?
    ZF 1.11
    Zend Server Community Edition
    Zend Studio 8
    MAC OSX 10.6

  20. #20
    Super-Moderator Avatar von Kaiuwe
    Registriert seit
    30.12.2006
    Beiträge
    5.520
    Thanks
    4
    Thanked 356 Times in 287 Posts

    Standard

    Zitat Zitat von klangfeld Beitrag anzeigen
    Kann ich nun mit jQuery loslegen?
    Klar, nur keine Scheu!
    Zum Zend Framework stehen jedem folgende Quellen zum Nachschlagen zur Verfügung:

Ähnliche Themen

  1. Antworten: 4
    Letzter Beitrag: 18.08.2010, 13:36
  2. Antworten: 5
    Letzter Beitrag: 15.08.2010, 11:18
  3. Antworten: 9
    Letzter Beitrag: 02.06.2008, 17:38
  4. Antworten: 25
    Letzter Beitrag: 02.05.2008, 18:11
  5. Antworten: 12
    Letzter Beitrag: 17.04.2008, 11:50

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •