webForumDet fria alternativet

Blogga med Zend Framework - Del 6: Zend_Controller_Route

Webbutveckling

0 svar · 3 493 visningar · startad av jme

Medlem sedan maj 20012 237 inlägg
Frågan#1

Vi använder Apaches mod_rewrite endast till för att dirigera trafiken till index.php. ZF innehåller egen funktionalitet för att skriva om adresserna.

Detta görs med hjälp av klassen Zend_Controller_Router_Route. Exempel kan ni hitta i metoden initRoutes() i klassen Initializer.

Vår blogg behöver tre enkla "regler". För det första så vill vi att om användaren besöker adressen http://localhost:9001 så skall han/hon dirigeras om till en sida som visar alla inlägg.

Detta görs med följande regel:

$router->addRoute(
                'short', new Zend_Controller_Router_Route('/',
                array(  'module' => 'blog',
                        'controller' => 'index',
                        'action' => 'list') ) );

Observera att ovanstående regel aktiveras endast, om adressen inte innehåller GET-variabler.

Andra argumentet till Zend_Controller_Router_Route innehåller värden för de variabler som används då dessa inte har angivits. Vill vi tydligt ange dessa värden i adressen, skulle vi kunna göra det på följande sätt:
http://localhost:9001/blog/index/list

Vår blogg har endast två controller- classer, en i varje modul. Då båda dessa klasser heter IndexController så känns det onödigt att i varje URL ange ”index”. Därför har vi en passande regel för detta:

$router->addRoute(
        'default', new Zend_Controller_Router_Route('/:module/:action/*',
        array( 'controller' => 'index') ) );

Ovanstående regel förväntar sig att adressen innehåller namnet på modulen och action-metoden. Vi har placerat två behållare för dessa värden. Nämligen ”:module” och ”:action”. Tidigare nämndes att det är onödigt att inkludera namnet på controller-klassen i adressen så här har vi lagt till ”index” som default värde.

Om vi nu t.ex. vill navigera till vår bloggs söksida så kan vi ange följande adress:

http://localhost:9001/blog/search

Observera att ovanstående regel avslutas med en ”*”. Det är en wildcard och antyder att regeln accepterar flera variabler.

Våg blogg behöver rätt så enkla regler men Zend_Controller_Router_Route har mer att ge.

Mer om Zend_Controller_Router_Route kan du läsa på sidan http://framework.zend.com/manual/en/zend.controller.router.html.

258 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
124 ms — deklarationer (db)
0 ms — hämta statistik (cache)
131 ms — hämta tråd, inlägg och bilagor (db)
123 ms — ändringar (db)