0

新しいモジュールを作成しました。モジュールは別のデータベースに接続されています。ここで、別のモジュール テンプレート ファイルからヘルパー クラスを呼び出したいとします。たとえば、「description.pthml」とします。次のコードを使用しました。

$_helper = $this->helper('ForumProdPosts/output');

しかし、「致命的なエラー: クラス 'Mage_ForumProdPosts_Helper_Output' が 546 行目の /home/black/public_html/app/Mage.php に見つかりません」というエラーが表示されます。

ヘルパー クラスは、次のコードを持つ local/MyWebsite/ForumProdPosts/Helper/Output.php にあります。

class MyWebsite_ForumProdPosts_Helper_Output extends Mage_Core_Helper_Abstract
{
    /**
     * Constructor
     */
    public function __construct()
    {
        Mage::dispatchEvent('forumprodposts_helper_output_construct', array('helper'=>$this));
    }

    public function getForumPosts(){
        echo "I m here";
            exit;
    }
}

また、私のモジュールのconfig.xmlは

<?xml version="1.0"?>
<config>
    <modules>
        <MyWebsite_ForumProdPosts>
            <version>0.1.0</version>
        </MyWebsite_ForumProdPosts>
    </modules>
    <frontend>
        <routers>
            <forumprodposts>
                <use>standard</use>
                <args>
                    <module>MyWebsite_ForumProdPosts</module>
                    <frontName>forumprodposts</frontName>
                </args>
            </forumprodposts>
        </routers>
        <layout>
            <updates>
                <forumprodposts>
                    <file>forumprodposts.xml</file>
                </forumprodposts>
            </updates>
        </layout>
    </frontend>
    <global>
        <helpers>
            <forumprodposts>
                <class>MyWebsite_ForumProdPosts_Helper</class>
            </forumprodposts>
        </helpers>
        <resources>
            <forumprodposts_write>
                <connection>
                    <use>phpbb_database</use>
                </connection>
            </forumprodposts_write>
            <forumprodposts_read>
                <connection>
                    <use>phpbb_database</use>
                </connection>
            </forumprodposts_read>
            <forumprodposts_setup>
                <connection>
                    <use>core_setup</use>
                </connection>
            </forumprodposts_setup>
            <forumprodposts_database>
                <connection>
                    <host><![CDATA[localhost]]></host>
                    <username><![CDATA[user]]></username>
                    <password><![CDATA[password]]></password>
                    <dbname><![CDATA[forumdb]]></dbname>
                    <model>mysql4</model>
                    <type>pdo_mysql</type>
                    <active>1</active>
                </connection>
            </forumprodposts_database>
        </resources>
    </global>
</config>

私のモジュールをmagentoが認識していないようです。私が間違っていることを助けてください。

モジュールが管理パネルの構成/詳細セクションに表示されないことに気付きました。私は再インデックスを行い、キャッシュをクリアしました。また、etc/modules の MyWebsite_ForumProdPosts.xml には次のコードがあります。

<?xml version="1.0"?>

<config>
    <modules>
        <MyWebsite_ForumProdPosts>
            <active>true</active>
            <codePool>local</codePool>
        </MyWebsite_ForumProdPosts>
    </modules>
</config>
4

2 に答える 2

1

Mage::helper()メソッドは、モジュールの名前ではなく、config.xmlのxmlノードで機能します。

Magentoが起動すると、すべてのconfig.xmlが1つの大きなxmlファイルに連結されます。このファイルでは、ノードglobal / helpersには、すべてのモジュールで定義されているすべてのヘルパーが含まれています。ヘルパーメソッドは、これらのノードを使用して適切なクラスをロードします。

public static function helper($name)
{
    $registryKey = '_helper/' . $name;
    if (!self::registry($registryKey)) {
        $helperClass = self::getConfig()->getHelperClassName($name);
        self::register($registryKey, new $helperClass);
    }
    return self::registry($registryKey);
}

したがって、ここにアクセスするにMyWebsite_ForumProdPosts_Helper_Outputは、次のように記述する必要があります。

$_helper = $this->helper('forumprodposts/output');
于 2013-02-15T14:04:12.170 に答える
1

命名規則は、config.xml で定義されている名前と一致する必要があると思います。そこで、以下のコードを試してください

$_helper = $this->helper('forumprodposts/output');
// all in small letter as defined in your xml file
于 2013-02-15T13:59:03.497 に答える