2012-11-10 30 views
1

一直拉着我的頭髮爲什麼這是行不通的。嘗試註冊控制器動作助手,例如在Zend docs中找到,在這裏發佈了幾個帖子和各種博客。嘗試是在application.ini和Bootstrap中進行的。Zend的控制器動作助手沒有找到

助手自己駐留在APPLICATION_PATH。 「/控制器/助手」。該文件本身被稱爲Scoping.php。在application.ini中,appnamespace =「」。

<?php 
class Helper_Scoping extends Zend_Controller_Action_Helper_Abstract 
{ 
    public function direct() 
    { 
     // code is here 
    } 
} 

首先,我試圖在的application.ini:

resources.frontController.actionhelperpaths.Helper = APPLICATION_PATH "/controllers/helpers" 
resources.frontController.plugins.Scoping = "Helper_Scoping" 

調用在我的控制下拋出與消息的異常:「動作助手的名字作用域未找到」:

$this->_helper->Scoping(); 

然後我在Bootstrap中嘗試了以下內容(基於我看到的其他示例,我嘗試了「Helper」和「Helper_」):

protected function _initActionHelpers() 
{ 
    Zend_Controller_Action_HelperBroker::addPath(
      APPLICATION_PATH . '/controllers/helpers', 
      'Helper_' 
    ); 
    Zend_Controller_Action_HelperBroker::addHelper(
     new Helper_Scoping() 
    ); 
} 

這一次我得到一個未捕獲的異常,但同樣的想法:「致命錯誤:類‘Helper_Scoping’在/Users/ppjd/Sites/dbos/application/Bootstrap.php未發現線路116」

既然有這麼多的工作的例子在那裏,我想,這一定我失去了一些東西愚蠢。請SOS。

+0

什麼是你的助手類的文件名? –

回答

0

倘若有人碰巧。在此,這裏是什麼終於爲我工作:這是一個命名空間問題,在引導,我提前做好了addHelper的這種修改:。

$rl = $this->getResourceLoader(); 
    $rl->addResourceTypes(array(
     // ...other namespace settings... 
     'helper' => array(
       'path'  => 'controllers/helpers', 
       'namespace' => 'Helper', 
     ), 
    )); 

一切的工作之後精細希望這可以幫助別人

[有時我覺得我花的時間比實際的應用程序開發花費更多的時間來嘗試框架。]

0

我不會嘗試這一點,但我覺得你的助手類(應用程序結構中:APPLICATION_PATH「/控制器/傭工)應該是‘Zend_Controller_Action_Helper_Scoping’,而不是‘Helper_Scoping’

+0

OK,絕望的我試過,但它不工作。據我所知,命名視圖助手,但我敢肯定,這不是動作助手是如何工作的?至少我沒見過一個例子編碼的方式。 –