2011-12-09 21 views
2

我在Zend Framework中執行搜索操作。如果Zend中包含特殊字符,如何獲取參數值?

和代碼是:

function searchAction() 
{ 
    $keyword = $this->getRequest()->getParam('keyword'); 
    if(!empty($keyword)) 
    { 
     //@todo here 
    } 
} 

我用的網址,如下所示張貼關鍵字動作:

/索引/搜索/關鍵字/ 谷歌

附:

  • 指數:控制器
  • 搜索:動作
  • 關鍵字&谷歌:一對PARAM和價值。

一切正常,直到用戶搜索與值的關鍵字是 「/」 字符

/索引/搜索/關鍵字/ /
=>:getParam( '關鍵字' )爲空

我曾嘗試使用%2F(其被編碼的 「/」)

/索引/搜索/關鍵字/ %2F
=>:404錯誤

我怎樣才能解決這個問題?

+0

你可以發佈爲'/ index/search?keyword =%2F'嗎?我不得不訴諸於此,因爲我不知道如何處理這種情況。 '$ this - > _ request-> getParams()'仍然應該返回它作爲數組中的一個參數。 – Benno

+0

@Benno:你說得對,但是,我需要保持'keyword'參數的配對鍵和值。因此,如果我使用?keyword = value =>當我用戶'url'助手,如:$ this-> url(); =>它會失去這個參數。 – vietean

回答

1

您可以嘗試在你的bootstrap.php

$router = $frontController->getRouter(); 

$router->addRoute(
     'searchOncontrollername', 
     new Zend_Controller_Router_Route('/controllername/search/:keyword', array('controller' => 'controllername', 
                  'action' => 'search' 
      ))); 

後,您可以使用可變關鍵字控制器工作增加航線:

$keyword = $this->getRequest()->getParam("keyword"); 
+0

真的,事件我發現404錯誤,我相信它來自Apache? – vietean

2

嘗試使用簡單:

$value = $this->_getParam('keyword'); 
相關問題