2010-10-05 12 views
0

j'ai ramassé zend framework et en jouant avec elle, et voici une situation que je vais à réaliser.
i ont default et usermodules, l'utilisateur dispose d'une mise en page différente user_layout que je charge dans predispatch de NovelsController d'utilisateur modules.i ont une petite forme dans le user_layout que post dates (de et vers) à showAction de NovelsController.comment avoir l'action d'un formulaire normal pour suivre le routage personnalisé zend?

ici est le code

<!-- the form inside user_layout --> 
<form method="get" action="/user/novels/show"> 
    <table class="font"> 
     <tr> 
      <td> <label for="to">From:</label></td> 
      <td class="simple_margin_left"><input type="text" id="from" name="from" size="12"/></td> 
     </tr> 
     <tr> 
     <td> <label for="to">To:</label></td> 
     <td class="simple_margin_left"><input type="text" id="to" name="to" size="12" /></td> 
     </tr> 
     <tr> 
     <td> </td> 
     <td></td> 
     </tr> 
     <tr> 

      <td colspan="2" align="center"><button type="submit" style="padding-left:10px; padding-right:10px; margin-left:0px" class="classy">Check</button> </td> 
     </tr> 
    </table> 

</form> 

J'utilise ce qui suit pour

$input = new Zend_Filter_Input($filters, $validators); 
$input->setData($this->getRequest()->getPost()); 

Jusqu'à présent, tout fonctionne très bien, je veux maintenant pour permettre à la show.phtml.so pagination je change l'action de forme pour obtenir et défini route dans mon application.ini comme si

resources.router.routes.user-show.route = /user/novels/show/:page/:from/:to 
resources.router.routes.user-show.defaults.controller = novels 
resources.router.routes.user-show.defaults.module = user 
resources.router.routes.user-show.defaults.action = show 
resources.router.routes.user-show.defaults.page = 1 
resources.router.routes.user-show.defaults.from = "" 
resources.router.routes.user-show.defaults.to = "" 

comment puis-je faire l'action du formulaire suivez cette règle, car jusqu'à présent, il s'agit simplement d'une chaîne de requête normale avec un point d'interrogation et une variable = valeur.

Comment puis-je y parvenir? Merci de lire ceci.

Répondre

1

Cela ne peut pas être fait avec ZF (et cela ne vaut pas le coup) à cause du fonctionnement du navigateur. Lorsqu'un formulaire GET est soumis, dans n'importe quelle langue, le navigateur crée la chaîne de requête en tant que paires clé-valeur et l'ajoute à l'URL spécifiée dans l'action.

Si vous insistez sur tous les urls étant « jolie » vous avez quelques options:

  • écrire du code pour rediriger vers une adresse formatée
  • règles de réécriture d'utiliser pour rediriger (Apache mod_rewrite)
  • utilisation JavaScript pour pirater la méthode onsubmit du formulaire (ne fonctionnera pas pour les utilisateurs sans JavaScript)
+0

J'utilise la méthode javascript location.replace pour effectuer une redirection et transmettre des valeurs à it.thanks pour répondre. –

+0

Heureux d'aider - j'ai eu cette question moi-même une fois :) –