2012-09-28 41 views
1

如何將Zend Framework 2路由配置爲只允許POST請求類型?配置ZF2路由以僅允許發佈請求

我已經通過文檔,但無濟於事。

編輯

這裏是我的DI代碼

'cv-create' => array(
    'type' => 'Zend\Mvc\Router\Http\Segment', 
    'options' => array(
     'route' => '/profile/cv/:type/create', 
     'defaults' => array(
      'controller' => 'Application\Controller\ProfileController', 
      'action'  => 'cv_create', 
     ), 
    ), 
), 

我的實際問題是部分,有沒有什麼辦法來注入要求控制成爲制約這條路呢?

回答

3

您可以擴展Zend\Mvc\Router\Http\Segment類並創建match()的稍微修改版本。由於match()具有$request參數如下它應該是簡單的:

public function match(Request $request, $pathOffset = null) 
{ 
    if (!$request->isPost()) 
    { 
     return null;  
    } 

    return parent::match($request, $pathOffset); 
} 

然後,在路由配置中使用這個修改的類而不是標準的段的。

+0

似乎沒問題,但請你看看我編輯的問題? –

+0

據我所知,路由器只是通過調用match()來迭代所尋找的匹配路由。用於匹配路線的邏輯似乎位於路線類(例如段)內。我認爲我提出的解決方案是乾淨的 - 另一種機制是在模塊類中定義'路由'事件 - 然後對匹配的路由進行一些檢查,即路由名稱和請求類型。 – DrBeza

+2

爲什麼不使用內置的路由Zend \ Mvc \ Router \ Route \ Method o.0? –

-1

類的Zend_Controller_Request_Http

您可以禁用其他請求類型。

+1

如果你解釋瞭如何禁用其他請求類型,可能會舉一個例子,這將會產生更好的答案。 – vascowhite

+0

這是ZF2嗎?下劃線讓我想起ZF1。 – Matsemann