2010-10-05 12 views
0

我已經找到了zend框架並且正在玩它,這裏有一個情況我想 的實現。
我有defaultusermodules,用戶具有不同的佈局user_layout,我在的用戶NovelsController modules.i在user_layout具有小的形式post日期(從和向)predispatch加載到NovelsController的的showAction。如何使正常形式的行爲遵循zend自定義路由?

這裏是代碼

<!-- 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> 

我使用以下方法來

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

到目前爲止一切正常,我現在想啓用分頁到show.phtml.so我改變形式的行動獲取和定義路由在我的application.ini像這樣

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 = "" 

我怎樣才能使窗體動作遵循該規則,因爲到目前爲止它只是一個帶問號和變量=值的正常查詢字符串。

我該如何做到這一點?感謝您閱讀本文。

回答

1

由於瀏覽器的工作方式,ZF無法做到這一點(並且不值得)。

當以任何語言提交GET表單時,瀏覽器會將查詢字符串構建爲鍵值對,並將其附加到操作中指定的URL。

如果你堅持在所有網址是「漂亮」,你有幾個選擇:

  • 寫代碼重定向到一個格式化的地址
  • 使用重寫規則重定向(Apache的mod_rewrite的)
  • 使用JavaScript劫持表單的onsubmit方法(不適用於沒有JavaScript的用戶)
+0

我使用javascript location.replace方法執行重定向並將值傳遞給it.thanks進行回答。 – 2010-10-07 09:32:07

+0

樂意幫忙 - 我自己曾經有這個問題:) – 2010-10-07 14:25:52