2010-10-06 84 views
0

我最近發現view helpers在手動調用$view->render()時似乎不可用。

在這種特殊情況下,我有一個配置視圖助手,我可以從我的視圖腳本中方便地調用,像這樣:

$this->config()->some->param 

我現在嘗試發送郵件後發現,上述似乎沒有手動工作時調用渲染方法:

/** 
* Within these view scripts, $this->config() is called, 
* which results in an empty object 
*/ 
$mail->setBodyText($this->view->render('partials/invite/email/text.phtml')); 
$mail->setBodyHtml($this->view->render('partials/invite/email/html.phtml')); 

我俯瞰的東西嗎?這是一個錯誤還是有意的行爲?我應該採取另一種手動渲染視圖腳本的方法嗎?

在此先感謝。

回答

0

我們可以看到更多的代碼嗎?

到目前爲止,我已經得到了這個與手動呈現視圖。

$view->setHelperPath('/path/to/helper/class'); 
print $view->render('view.phtml'); 

這這裏是內/ path指定FooBar.php類/到/幫手/類

<?php 
class Zend_View_Helper_FooBar extends Zend_View_Helper_Abstract { 
    public function fooBar() 
    { 
     return 'random string this will be the output'; 
    } 
} 

在view.pthml

print $this->fooBar(); 

輸出

隨機字符串,這將是輸出

+0

手動提供幫助程序路徑對我來說也是如此。儘管如此,這仍然讓我覺得很麻煩。幫助程序路徑通過我的應用程序配置文件進行註冊,並且應該已經設置。 – 2010-10-06 14:15:30

+0

如果已經有助手路徑,那麼你的助手類必須放在該路徑中。它在那裏,不工作? – 2010-10-06 14:17:17

+0

感謝您的回覆,但助手路徑已正確註冊。當沒有實際調用$ this-> view-> render()的情況下渲染視圖時,它們正在被正確執行,這是令人困惑的。這似乎是手動調用$ this-> view-> render()從控制器中打破視圖助手。 – 2010-10-06 15:13:25