【问题标题】:How to access the value of a url variable in a Zend view Helper?如何在 Zend 视图助手中访问 url 变量的值?
【发布时间】:2010-04-15 13:27:51
【问题描述】:

我想在我的视图助手中访问特定变量(在 url 中)的值。我该怎么做?

我可以通过 Zend_Controller_Front::getInstance()->getRequest()->getControllerName(); 获得我的控制器名称。 ,但我不知道变量...

提前致谢!

【问题讨论】:

    标签: php zend-framework view-helpers


    【解决方案1】:

    可以从Zend_Controller_Front获取请求对象:

    abstract class App_View_Helper_Abstract extends Zend_View_Helper_Abstract
    {
       /**
        * @var Zend_Controller_Front
        */
       private $_frontController;
    
       /**
        * Convience function for getting a request parameter from the request
        * object in a view helper
        * @param string $name The name of the request parameter
        * @param mixed $default The value to return if $name is not defined in the
        * request
        * @return mixed The value of parameter $name in the request object,
        * or $default if $name is not defined in the request
        */
       public function getRequestVariable ($name, $default = null)
       {
          return $this->getRequest()->getParam($name, $default);
       }
    
       /**
        *
        * @return Zend_Controller_Request_Abstract
        */
       public function getRequest ()
       {
          return $this->getFrontController()->getRequest();
       }
    
       /**
        * @return Zend_Controller_Front
        */
       private function getFrontController ()
       {
          if ( empty($this->_frontController) )
          {
             $this->_frontController = Zend_Controller_Front::getInstance();
          }
          return $this->_frontController;
       }
    }
    

    现在您可以从所有扩展 App_View_Helper_Abstract 的视图助手中使用getRequestVariable-方法

    【讨论】:

    • 感谢您的快速回复,但我将寻求其他回复。
    • 当然。我的代码做同样的事情,只是为所有视图助手提供了一种无需复制代码即可检索参数的方法。
    【解决方案2】:

    最明显的是:

    // will retrieve any param set in the request (might even be route param, etc)
    Zend_Controller_Front::getInstance()->getRequest()->getParam( 'someParam' );
    
    // $_POST
    Zend_Controller_Front::getInstance()->getRequest()->getPost( 'somePostParam' );
    
    // $_GET
    Zend_Controller_Front::getInstance()->getRequest()->getQuery( 'someQueryStringParam' );
    

    还可以查看 API 文档:
    General
    Zend_Controller_Request_Http (1.10)

    【讨论】:

    • 感谢您的快速回复!正是我需要的:-)
    猜你喜欢
    • 2011-08-31
    • 1970-01-01
    • 1970-01-01
    • 2011-06-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多