turk porno porno escort rokettube
Ergebnis 1 bis 4 von 4

Thema: Datenbankzugriff in einem Formular via jQuery

  1. #1
    Benutzer
    Registriert seit
    31.10.2012
    Ort
    Kaiserslautern
    Beiträge
    47
    Thanks
    7
    Thanked 9 Times in 3 Posts

    Standard Datenbankzugriff in einem Formular via jQuery

    Hallo,
    ich bin gerade dabei dabei eine Anwendung von ZF1 auf ZF2 umzuschreiben und hänge an folgendem Problem:
    In meinem Formular gibt es ein Feld, dass schon während der Eingabe, den Inhalt des Feldes nutzt um eine Datenbankabfrage zu machen. Ich habe nun grob versucht 1:1 wie unter ZF1 vorzugehen:

    - ich habe im Controller eine Action angelegt, die sich um den Datenbankzugriff kümmert:
    PHP-Code:
    public function numberAction()
        {
            
    $id=(int)$_GET['id'];
            
            
    //get adapter
            
    $serviceLocator $this->getServiceLocator();
            
    $database = new Database();
            
    $adapter $database->createTicketService($serviceLocator);
            
            
    //get data
            
    $stmt $adapter->createStatement('SELECT ...');
            
    $results $stmt->execute();
            
    //...
            
    return new ViewModel(array(
                            
    'result' => '...',
                    ));
                }
            } 
    Das ist zwar noch ungetestet, allerdings stammt vieles davon schon aus einem anderen Datenbankzugriff, der funktioniert.

    - Nun habe ich einen dazugehörigen view erstellt, der lediglich $result ausgibt:
    PHP-Code:
    <?php echo $this->result?>
    Im jQuery - Script rufe ich, um die Eingabe zu prüfen, lediglich diesen view auf und behandle dann den Rückgabewert. Und genau hier liegt das Problem. In meiner ZF1 Anwendung hat folgendes funktioniert:
    PHP-Code:
    $.get("index/number?id="+number+"", function(text){... 
    Dies geht nun nicht mehr, da in ZF2 die URL anders dargestellt wird.

    Nun habe ich eine Frage und eventuell eine Folgefrage:
    - Gibt es eine Möglichkeit, an genanntem Knackpunkt, auf den view und damit auf die Action zuzugreifen, oder soll ich ganz anders vorgehen?
    - Die Folgefrage wäre dann: Wie sähe das 'ganz anders' aus? Ich möchte weiterhin den konkreten DB-Zugriff über ZF machen nicht über jQuery.

    Edit: nach ein paar recherchen glaube ich das die URL erreichbar wäre, wenn ich die Routes unter module.config.php ergänze. Ich werde dies als nächstes probieren.
    Geändert von Wer? (30.09.2014 um 16:12 Uhr)

  2. #2
    Benutzer
    Registriert seit
    30.05.2009
    Ort
    München
    Beiträge
    84
    Thanks
    0
    Thanked 37 Times in 14 Posts

    Standard

    Gewöhn dir bitte ab, direkt auf Superglobals zuzugreifen.....
    Und render deine Url im PHP Skript, anstatt sie direkt im Javascript zusammen zu bauen... Dafür gibts viewhelper! http://framework.zend.com/manual/2.3...lpers.url.html
    Mit Hilfe dieses ViewHelpers, kannst du den in deiner config Konfigurierten routen NAMEN verwenden, um die entsprechende URL zu generieren.

    Ansonsten gibts da noch einiges zu optimieren.
    Z.b. hat der DB Zugriff nichts im Controller verloren. Das gehört in einen Service gekapselt!
    Geändert von michl (01.10.2014 um 02:44 Uhr)

  3. #3
    Benutzer
    Registriert seit
    31.10.2012
    Ort
    Kaiserslautern
    Beiträge
    47
    Thanks
    7
    Thanked 9 Times in 3 Posts

    Standard

    Danke für deine Antwort,

    ich habe nun folgende Route erstellt:
    PHP-Code:
    'ticket' => array(
                        
    'type'    => 'segment',
                        
    'options' => array(
                                
    'route'       => '/ticket',
                                
    'defaults' => array(
                                        
    'controller' => 'bm\Controller\Index',
                                        
    'action'     => 'ticket',
                                )
                        )
                ), 
    Nach deinem Link müsste dann folgende Abfrage den richtigen Link liefern:
    PHP-Code:
    echo $this->url('ticket'); 
    Nur weiß ich nicht welches PHP skript du meinst. Ich benutze keine phtml Seite mehr für das jQuery, sondern eine js Datei die im public Ordner liegt.

  4. #4
    Benutzer
    Registriert seit
    30.05.2009
    Ort
    München
    Beiträge
    84
    Thanks
    0
    Thanked 37 Times in 14 Posts

    Standard

    Es ist prinzipiell nicht gut, wenn irgendein Skript "magically" einfach so loswandert und keiner so genau weiß, wieso überhaupt.
    Externe Skripte sollten normalerweise durch einen Aufruf innerhalb eines PHP Skriptes initialisiert werden. Dort kannst du dann auch deine URL Parameter übergeben.
    Der Inlinescript Viewhelper ist da ganz Hilfreich: View Helper - InlineScript — Zend Framework 2 2.3.3 documentation - Zend Framework

    PHP-Code:
    <?php $this->inlineScript()->captureStart(); ?>
    $(document).ready(function() {
        $('#myForm').myFancyFormPlugin({
            requestTicketSlotUrl : '<?=$this->url('ticket/requestSlot'); ?>'
        });
    });
    <?php $this->inlineScript()->captureEnd(); ?>
    Wenn du den Schnipsel an mehreren stellen benötigst, kannst du das entweder in ein Partial auslagern, dass du bei bedarf renderst, oder gleich nen separaten ViewHelper schreiben.
    Dann sind folgende Aufrufe denkbar:

    PHP-Code:
    <?php $this->prepareMyFancyFormPlugin(
        [
            
    'requestTicketSlotUrl' => $this->url(
                
    'ticket/requestSlot'
                [
                    
    'otherParam' => 'otherValue'
                
    ]
            )
        ]
    ); 
    ?>
    Das hat den Vorteil, dass wenn du morgen auf die Idee kommst, die Route zu ändern, du dies nur noch einmalig in deiner Config machen brauchst und alles weiter läuft, wie gehabt.

    Wenn du auf Client Seite ein komplettes MV* Framework laufen hast, dann ist das natürlich nicht notwendig. Aber davon geh ich jetzt einfach mal nicht aus.
    Geändert von michl (02.10.2014 um 17:36 Uhr)

Ähnliche Themen

  1. Antworten: 3
    Letzter Beitrag: 13.04.2012, 14:26
  2. Antworten: 13
    Letzter Beitrag: 02.09.2010, 18:11
  3. Mehrere Datenbank Records in einem Formular bearbeiten / erzeugen
    Von slartibartfast im Forum Einsteigerfragen
    Antworten: 9
    Letzter Beitrag: 18.02.2010, 14:03
  4. Mehrere Datensätze in einem Formular eingeben
    Von scootershooter im Forum Formulare
    Antworten: 0
    Letzter Beitrag: 25.08.2009, 14:29
  5. Datenbankzugriff per PDO_MySQL
    Von shoyer im Forum Installation & Konfiguration
    Antworten: 15
    Letzter Beitrag: 01.02.2008, 15:20

Lesezeichen

Berechtigungen

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