如果它包含特殊字符,如何在Zend中获取param值?

时间:2011-12-09 12:29:04

标签: php model-view-controller zend-framework

我在Zend Framework中有一个搜索操作。

代码是:

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

我使用下面的网址向操作发布关键字:

  

/索引/搜索/关键字/的谷歌

使用:

  • index:controller
  • 搜索:行动
  • keyword&谷歌:一对参数和价值。

在用户搜索值为“/”字符

的关键字之前,一切正常
  

/索引/搜索/关键字/的 /
   => :getParam('keyword')为空

我尝试使用%2F(编码为“/”)

  

/索引/搜索/关键字/的%2F
   => :404错误

如何解决此问题?

2 个答案:

答案 0 :(得分:2)

尝试简单使用:

$value = $this->_getParam('keyword');

答案 1 :(得分: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");