View Parameter übergeben

Ausgabedaten formatieren und darstellen

View Parameter übergeben

Beitragvon Megabyte91 am So 7. Mär 2010, 21:39

Hallo,
ich habe bei meinem ersten cakePHP-Projekt mal wieder ein kleines Problem. Ich möchte einen View haben, der alle Datensätze aus einem bestimmten Zeitraum anzeigt. Der Zeitraum soll in einem Formular eingegeben werden können und nach dem abschicken des Forms dann die entsprechende View aufgerufen werden.
Diese View habe ich bereits erstellt, auch die entsprechende Funktion im Controller schon. Aber wie kann ich nun beim Aufrufen der View nun zuvor ein Formular anzeigen, in dem Start- und Enddatun eingegeben werden können?


Hab im Moment keine Ahnung, wie ich vorgehn soll. Schonmal Danke für eure Hilfe!
Megabyte91
 
Beiträge: 4
Registriert: So 14. Feb 2010, 14:06
Wohnort: Nordhessen
CakePHP-Version: 1.2.6
OS: Windows 7

Re: View Parameter übergeben

Beitragvon mbrod am So 7. Mär 2010, 23:00

Im Prinzip brauchst du zwei Views: search.ctp für das Suchformular und found.ctp zum Anzeigen der gefundenen Datensätze. Im Controller könnte es prinzipiell so aussehen:
Code: Alles auswählen
function search() {
    if(!empty($this->data)){
        //hier kommt die Abfragelogik hin
        $this->render(string $action, string $layout, string $file)//muss letzendlich zu found.ctp führen
    }
    //rendert automatisch in search.ctp
}
 

Für die Abfragelogik ist postConditions sehr hilfreich. Und:
http://book.cakephp.org/view/57/Controller-Methods#render-428
mbrod
 
Beiträge: 103
Registriert: Mi 20. Mai 2009, 18:09
Wohnort: Frankfurt am Main
CakePHP-Version: 1.3.2
OS: Mac OS X

Re: View Parameter übergeben

Beitragvon Megabyte91 am Mi 10. Mär 2010, 14:56

Erstmal Danke für die schnelle Antwort. Habe in den letzten Tagen deine Tips mal ausprobiert, hänge aber noch an einer Stelle. Ich habe zwei Views angelegt: suche.ctp (mit 2 Eingabefeldern) und ergebnis.ctp. Hier mein Code:

Code: Alles auswählen
function suche() {
    if(!empty($this->data)){
        $this->render('/sales/ergebnis');
    }
    }


Code: Alles auswählen
function ergebnis($start, $end) {
        $this->set('sales', $this->Sale->find('all', array('conditions' => array('Sale.datum >=' => $start, 'Sale.datum <=' => $end))), $this->paginate());
    }


Problem: Wie bekomme ich jetzt die Daten, die im Suche Formular eingegeben wurden, als Parameterin die Ergebninis-Funktion ($start und $end). Bin mit dem postConditions nicht zu recht gekommen...
Megabyte91
 
Beiträge: 4
Registriert: So 14. Feb 2010, 14:06
Wohnort: Nordhessen
CakePHP-Version: 1.2.6
OS: Windows 7

Re: View Parameter übergeben

Beitragvon mbrod am So 14. Mär 2010, 00:47

Die Daten aus dem Suchformular werden in $this->data übergeben. Der Vollständigkeit wegen erst mal das Suchformular:
Code: Alles auswählen
<?php
echo $form->create(false,array('action' => 'search'));
echo $form->input('start');
echo $form->input('end');
echo $form->end('submit');
?>

Im Controller sollte dann folgender Code funktionieren:
Code: Alles auswählen
function search() {
    if(!empty($this->data)){
        $conditions=array('Sale.datum >='=>$this->data['start'],'Sale.datum <='=>$this->data['end']);
        $this->paginate['conditions']=$conditions;
        $this->set('sales', $this->paginate());
        $this->render('/sales/ergebnis');
    }
}
 

Beim Aufruf der Adresse .../sales/search ist $this->data leer, sodass der if-Zweig nicht ausgeführt wird und automatisch $this->render('/sales/search') also search.ctp benutzt wird und im Browser das Suchformular angezeigt wird. Beim Absenden des Formulars (method="post") landen die abgeschickten Daten in $this->data, sodass der if-Zweig durchlaufen wird und entsprechend ergebnis.ctp benutzt wird. (Zum Testen bei mir habe ich einfach die "gebackene" index.ctp benutzt)
mbrod
 
Beiträge: 103
Registriert: Mi 20. Mai 2009, 18:09
Wohnort: Frankfurt am Main
CakePHP-Version: 1.3.2
OS: Mac OS X

Re: View Parameter übergeben

Beitragvon Megabyte91 am So 14. Mär 2010, 16:00

SUPER!! Funktioniert so perfekt.

Vielen Dank!
Megabyte91
 
Beiträge: 4
Registriert: So 14. Feb 2010, 14:06
Wohnort: Nordhessen
CakePHP-Version: 1.2.6
OS: Windows 7


Zurück zu Views

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 0 Gäste

cron