2013-05-01 77 views
1

我正在嘗試使用Sofzo中提到的解決方案實現TinyMCE到文本區域。但是,當我試圖擴展Sofzo_Form我收到以下錯誤:使用Sozfo TinyMCE解決方案實現Sofzo_From未找到錯誤

Fatal error: Class 'Sozfo_Form' not found in /home/foldername/public_html/application/forms/PageForm.php on line 4 

我迄今所做的 -

上傳Sofzo文件庫下面的目錄結構

/庫
../Sozfo
../Form.php
../../Form
../../../Element
../。 ./../../TinyMce.php
../../View
../../../Helper
../../../Exception.php
.. /../../../FormTinyMce.php
../../../../TinyMce.php

加載在的application.ini類如

Autoloadnamaspaces[] = "Sofzo_" 

並在自舉作爲

$autoLoader = Zend_Loader_Autoloader::getInstance(); 
    $autoLoader->registerNamespace('Zend_'); 
    $autoLoader->registerNamespace('SF_'); 
    $autoLoader->registerNamespace('CMS_'); 
    $autoLoader->registerNamespace('Sofzo_'); 

    $loader = new Zend_Loader_PluginLoader(); 
    $loader->addPrefixPath('Zend_View_Helper', 'Zend/View/Helper/') 
      ->addPrefixPath('Storefront_View_Helper', 
          'application/modules/storefront/views/helpers') 
        ->addPrefixPath('Sozfo_Form', 'Sozfo/'); 

        $view=new Zend_View(); 
        $view->addHelperPath('Sozfo/View/Helper', 'Sozfo_View_Helper'); 

但是,當我試圖程度Sofzo_Form在Page_Form作爲

class Form_PageForm extends Sozfo_Form { } 

這個問題解決了感謝Tim噴泉。但現在當我加載元素

$this->addElement('tinyMce', 'message', array(
     'label' => 'Message', 
     'required' => true, 
     'cols' => '50', 
     'rows' => '10', 
     'editorOptions' => new Zend_Config_Ini(APPLICATION_PATH . '/configs/tinymce.ini', 'moderator') 
    )); 

我收到以下錯誤

Plugin by name 'FormTinyMce' was not found in the registry 

通讀在原址一些意見,他們都表示加

$view->addHelperPath('Sozfo/View/Helper', 'Sozfo_View_Helper'); 

來引導。我已經這樣做了,但我猜測我沒有做正確的事情。非常感謝幫助。

+0

請您可以編輯您的問題,包括完整的錯誤消息 - 錯誤應該顯示包括路徑在你包括的位之後。還要從引導程序(您設置'$ autoLoader'的地方)添加完整的自動加載器設置。 – 2013-05-01 10:22:47

+0

感謝您的回覆,但那實際上是我收到的完整錯誤消息。在bootstrap中使用完整的自動加載器代碼更新原件。 – NishanCK 2013-05-01 11:00:08

回答

1

我認爲問題是ZF無法找到該類,因爲它不知道名稱空間的Sozfo_。您試圖以兩種不同的方式註冊這個名稱空間,但它們都不正確。

在的application.ini,您有:

Autoloadnamaspaces[] = "Sofzo_" 

但這應該是:

autoloaderNamespaces[] = "Sozfo_" 

然後在引導你試過用註冊它:

$autoLoader->registerNamespace('Sofzo_'); 

但推測這應該是:

$autoLoader->registerNamespace('Sozfo_'); 

(注意拼寫)。你應該使用哪種方法只能使用這些方法之一,因爲他們做同樣的事情。

如果在此之後它仍然不起作用,那麼include_path會有問題。

編輯:要解決這個視圖助手路徑,嘗試代替兩行這一點,你目前有:

$view = new Zend_View(); 

$viewRenderer = new Zend_Controller_Action_Helper_ViewRenderer($view); 
$stack = Zend_Controller_Action_HelperBroker::getStack(); 
$stack->push($viewRenderer); 

$view->addHelperPath('Sozfo/View/Helper', 'Sozfo_View_Helper'); 

這增加了輔助路徑就像你有一個視圖對象,而且它提供給視圖渲染器(這是呈現所有視圖腳本的東西)。如果你不這樣做,那麼視圖渲染器使用它自己的視圖對象,所以你在引導程序中設置的視圖對象從不用於任何事情。

如果這不起作用,嘗試通過一個完整路徑作爲第一個參數來代替addHelperPath:

$view->addHelperPath(APPLICATION_PATH.'/../library/Sozfo/View/Helper', 'Sozfo_View_Helper'); 
+0

非常感謝,這幾乎解決了擴展Sozfo_Form的問題,現在當我添加一個元素時,我得到另一組錯誤。非常感謝,如果你也可以看看。將更新原始問題。 – NishanCK 2013-05-01 11:16:58

+0

我已經編輯了我的答案和一些可能有所幫助的視圖。 – 2013-05-01 11:36:09

+0

謝謝,這樣做訣竅:)但是,當我用TinyMCE編輯器向控制器添加一個新元素(如上所述)時,它將控制器中的所有文本區域都轉換爲tinymce編輯器。任何想法的問題可能是?謝謝。 – NishanCK 2013-05-01 11:49:21

相關問題