1

我正在尝试使用Sofzo中提到的解决方案将 TinyMCE 实施到文本区域。但是当我尝试扩展 Sofzo_Form 时,出现以下错误:

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

到目前为止我所做的 -

将 Sofzo 文件上传到具有以下目录结构的库

/library
../Sozfo
../Form.php
../../Form
../../../Element
../../../../TinyMce.php
../../查看
../../../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'); 

但是当我尝试将 Page_Form 中的 Sofzo_Form 扩展为

class Form_PageForm extends Sozfo_Form { }

感谢 Tim Fountain 解决了这个问题。但是现在当我将元素加载为

$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');

引导。我已经这样做了,但我猜我做的不对。非常感谢您的帮助。

4

1 回答 1

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');
于 2013-05-01T11:06:21.100 回答