[PHP / Zend] Zend_Controller & Parameter
-
Hallo,
Ich hab mich die letzten Tage in das Zend Framework eingearbeitet und ein paar kleinere Tests durchgefuehrt. Nun bin ich aber soweit dass ich fuer meine Seiten Get/Post Parameter brauch.
Post ist ja soweit kein Problem da es ja nicht ueberschrieben wird und somit direkt in Zend_Filter_Input einspeisen kann.
Das geht ja nun mit Get nicht, da ich die Parameter ja anders uebertrage als mit ?var=value sondern mit /controller/action/var/value . Liest man die Dokumentation wird man auf Zend_Controller_RewriteRouter hingewiesen mit dem man das Verhalten steuern koennen sollte. Allerdings gibt es hier bis jetzt noch keine Beispiele und auch sonst hab ich bis jetzt noch keine passende Erklaerung gefunden. Urspruenglich sieht der Code so aus:$controller = Zend_Controller_Front::getInstance(); $controller->setControllerDirectory('D:\web\www\phpHosting\app\controllers'); $controller->dispatch();
Nun moecht ich aber fuer den Controller Todo und der Action view noch weitere Parameter (id) verfuegbar machen. also in der Form /todo/view/:id . Also leg ich einen neuen Router an:
// neuer Teil $router = new Zend_Controller_RewriteRouter(); $router->addRoute('todo', new Zend_Controller_Router_Route('todo/view/:id')); // alter Teil $controller = Zend_Controller_Front::getInstance(); // mit setRouter $controller->setRouter($router); $controller->setControllerDirectory('D:\web\www\phpHosting\app\controllers'); $controller->dispatch();
Nur funktionieren tut es nicht. Folglich wird hier wohl ein Fehler drinnen sein?
Zudem moechte ich fuer jeden Controller & Actions logischerweise andere Parameter uebergeben. Ich braeuchte also viele Regeln die ich dann beim starten des Scriptes erst alle hinzufuegen muesste. Gibt es hier eine elegantere Methode?
Auch soll es Controller geben ohne definierte Actions. Er soll also immer nur die IndexAction aufrufen. An und fuersich ja kein grosses Problem (/controller/). Allerdings soll er dann den Rest als Parameter auswerten. Z.B. /page/432345 . Wie muss ich den dann aber hinzufuegen mit addRoute? Allg. Form waere ja dann /:controller/:id , dies soll aber nur fuer den Controller page gelten.
Zuletzten noch eine Frage die nichts mit dem Zend Framework zu tun hat: ab welcher PHP-Version wird der sog. "fließende" Stil unterstuetzt:
$select->from('round_table', '*') ->where('noble_title = ?', 'Sir') ->order('first_name') ->limit(10,20);