【问题标题】:How Action helper communicate with view helper动作助手如何与视图助手通信
【发布时间】:2014-11-19 15:30:07
【问题描述】:

我创建的动作助手文件路径是

C:\xampp\htdocs\ecom\application\controllers\helpers

文件名: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\application\views\helpers

文件名: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)
                }
    }
}

这个函数

$this->_helper->输入数据->fetch_db_value

报错

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

【问题讨论】:

  • 请注意:通常这会分成两个单独的问题。

标签: php zend-framework


【解决方案1】:

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 对象访问它。在控制器中:

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

如果该视图助手只包含单个 displayProducts() 方法,那么您可以将该类重命名为 Application_View_Helper_DisplayProducts 并使用以下方法在视图脚本中引用该方法:

$this->displayProducts($res)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-20
    • 2011-06-27
    • 2011-04-02
    • 2011-07-16
    • 2022-01-16
    相关资源
    最近更新 更多