[英]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
給錯誤
回復:動作助手:
動作幫助程序上的名稱空間前綴為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.