2011-05-24 77 views

回答

6

由於所有視圖助手在他們$view屬性參照視圖,答案是肯定的。

你不知道輔助方是哪些屬性可用。最好在通話或施工時將任何必需的財產傳遞給幫手。在本例中 下面你可以設置和獲取視圖瓦爾

<?php 

class App_View_Helper_Job extends Zend_View_Helper_Abstract { 

    public function setView(Zend_View_Interface $view) { 
     $this->view = $view; 
    } 

    public function job() { 
      $this->view->var1 = "testing var1 "; 
      $this->view->var2 = $this->view->var1; 
    } 
} 
+6

他們在那裏,但如果你將在你的助手使用它們這將是非常糟糕的幫手,因爲它會違反基本原則之一 - 去耦。 – gaRex 2011-05-24 07:59:01

+0

當您調用變量時,如何將變量傳遞給視圖幫助器? – 2015-03-31 14:37:38

1

以及可以訪問視圖助手裏面$view形式,我舉一個例子
視圖助手的視圖實例是輔助實例化中的一個實例。它不會更新視圖克隆。所以你不能確定你使用的是哪一個,例如從部分調用。

+5

'setView()'在'Zend_View_Helper_Abstract'中實現,所以你不需要自己做。 – 2011-05-24 08:12:09

1

你應該知道一兩件事:

+0

這不太正確。如果你實現了'setView()',那麼在執行幫助程序之前它將會收到實際的View-Object。 – KingCrunch 2011-05-24 08:12:32

+0

@KingCrunch你錯了。 – Xerkus 2011-05-24 12:19:22

0

我發現,當我在註冊表中設置視圖實例,並從幫助器獲取它的視圖變量保持。下面是我在社交發動機項目使用的代碼片段

$view = Zend_Registry::get('Zend_View'); 
/* 
* Check data available and set it to local variable 
*/ 
if(isset($view->localeTranslations[$key])) 
{ 
    $translate = $view->localeTranslations[$key]; 
}