簡體   English   中英

動作助手如何與視圖助手進行通信

[英]How Action helper communicate with view helper

我創建一個動作助手文件路徑是

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-> Inputdata-> fetch_db_value

給錯誤

  1. 關於語法的任何想法如何在視圖幫助器自定義功能中使用用戶操作幫助器自定義功能
  2. 語法如何在控制器上調用函數displayProducts()

回復:動作助手:

動作幫助程序上的名稱空間前綴為Zend_ 自動加載器將在Zend Framework庫所在的位置查找它。 為了使自動加載器(在這種情況下為資源加載器)在application/controllers/helpers查找動作幫助application/controllers/helpers ,名稱空間前綴必須是appnamespace ,通常是Application_ 因此,將類重命名為Application_Controller_Helper_Inputdata應該可以解決問題。

回復:視圖助手:

類似的事情也適用。 通常,您將使用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)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM