Action帮助程序如何与视图助手通信

时间:2014-11-19 15:30:07

标签: php zend-framework

我创建了一个动作助手文件路径

C:\ XAMPP \ htdocs中\ ECOM \应用\控制器\助手

文件名: Inputdata.php

class Zend_Controller_Action_Helper_Inputdata extends Zend_Controller_Action_Helper_Abstract
{
    function Inputdata()
    {
        return $this;
    }


    function fetch_db_value($var)
        {
        if(get_magic_quotes_gpc()==0) {
            return is_array($var) ? array_map(array($this,'fetch_db_value'), $var) : nl2br(stripslashes(trim($var)));
            }else {
            return is_array($var) ? array_map(array($this,'fetch_db_value'), $var) : nl2br(trim($var));
            }
        }


    }

我在控制器上调用此函数,输出正确如下:

$dbData=$this->_helper->Inputdata->fetch_db_value($dbData); 

我还有一个视图助手,路径是

C:\ XAMPP \ htdocs中\ ECOM \应用\视图\助手

文件名: Comman.php

class Zend_View_Helper_Comman
{
    public function displayProducts($res){
                 # Res is a array           
                foreach($res as $val){
                  # $val also is sub array of array $res 
                  $val=$this->_helper->Inputdata->fetch_db_value($val); 
                  print_r($val)
                }
    }
}

这个功能

$这 - > _helper-> Inputdata-> fetch_db_value

给出错误

  1. 关于语法如何在视图助手自定义函数中使用用户操作助手自定义函数的任何想法
  2. 语法如何在控制器上调用函数displayProducts()

1 个答案:

答案 0 :(得分:0)

Re:动作助手:

操作助手上的命名空间前缀为Zend_。自动加载器将在Zend Framework库所在的位置查找它。为了使自动加载器(在本例中为资源加载器)在application/controllers/helpers中查找操作助手,名称空间前缀必须是appnamespace,通常是Application_。因此,将类重命名为Application_Controller_Helper_Inputdata应该可以解决问题。

Re:视图助手:

类似的事情适用。通常,您将使用appnamespace前缀Application_。因此,将类重命名为Application_View_Helper_Comman应该可以在视图脚本中访问displayProducts()方法:

$this->comman()->displayProducts($res)

您提到在控制器中引用view-helper方法。通常没有这样做; view-helpers通常仅在视图脚本中引用。但是,如果您真的想这样做,可以通过View对象访问它。在控制器中:

$this->_view->comman()->displayProducts($res)

如果该view-helper仅包含该单displayProducts()方法,则可以将该类重命名为Application_View_Helper_DisplayProducts,并使用以下命令在视图脚本中引用该方法:

$this->displayProducts($res)