1

magentoの簡単なモジュールを作成しようとしています。コントローラとルーティングを作成しましたが、何らかの理由でモデルにアクセスできません。私の知る限り、それはロードされていません。

エラーメッセージが表示されず、モデルオブジェクトが作成されません。

これを引き起こしているのは何ですか?

ここにいくつかの情報があります:

コントローラ:

class MyVendor_MyModule_IndexController extends Mage_Core_Controller_Front_Action
{

    public function pingAction(){

        $model = Mage::getModel('mymodule/mymodule');       
        echo "<pre>" . print_r($model->load(1),true);

    }
}

モデルツリービュー:

MyVendor
-MyModule
-- controllers
---- IndexController.php
-- Model
---- Mysql4
-------- MyModule.php
-------- MyModule
---------------- Collection.php
---- MyModule.php
-- etc
---- config.xml

config.xml

<?xml version="1.0" encoding="UTF-8"?>

<config> 
    <modules>
        <MyVendor_MyModule>
            <version>0.0.1</version>
        </MyVendor_MyModule>
    </modules>
    <frontend>
        <routers>
            <mymodule>
                <use>standard</use>
                <args>
                    <module>MyVendor_MyModule</module>
                    <frontName>mymodule</frontName>
                </args>
            </mymodule>
        </routers>   
    </frontend>
    <global>
        <models>
            <mymodule>
                <class>MyVendor_MyModule_Model</class>
                <resourceModel>mymodule_mysql4</resourceModel>
            </mymodule>
            <mymodule_mysql4>
                <class>MyVendor_MyModule_Model_Mysql4</class>
                <entities>
                    <mymodule>
                        <table>mymodule_table</table>
                    </mymodule>
                </entities>
            </mymodule_mysql4>
        </models>
        <resources>
                    <mymodule_setup>
                        <setup>
                                <module>MyVendor_MyModule</module>
                        </setup>
                        <connection>
                                <use>core_setup</use>
                        </connection>
                    </mymodule_setup>
                    <mymodule_setup>
                        <connection>
                                <use>core_write</use>
                        </connection>
                    </mymodule_setup>
                    <mymodule_setup>
                        <connection>
                                <use>core_read</use>
                        </connection>
                    </mymodule_setup>
            </resources>
    </global>
</config>

そして私のモデルには単純なものがあります:

class MyVendor_MyModule_Model_Mysql4_MyModule extends Mage_Core_Model_Mysql4_Abstract
{
    public function _construct()
    {   
        $this->_init('mymodule/mymodule', 'id');
    }
}
4

2 に答える 2

5

プラットフォームによっては、Mage::getModel('mymodule/mymodule');ロードするファイルを探すときに大文字と小文字が区別される場合があります(つまりMage::getModel('myModule/myModule');、フォルダー構造と名前を付ける必要があります)

get_class(Mage :: getModel('mymodule / mymodule'))が返すものを確認してください。それはあなたのクラスのクラス名ですか?そうでない場合は、オブジェクトのインスタンスを作成していません。以前にキャメルケースをチェックし、実際にファイル/MyVendor/MyModule/Model/MyModule.php(からのコードを含めなかった)があることを確認します。

クラスのインスタンスがある場合、それをサポートする行がDBにない可能性があります。したがって、-> load(1); 何もしません。

于 2013-03-12T02:02:53.923 に答える
0

app / etc / modules / MyVendor_MyModule.xmlを追加しましたか?そのためのタイプミスエラーはありませんか?管理者にモジュールが見つかった場合は、モジュールが登録されていることを確認します。

コントローラーを拡張しているので、コアコントローラーをオーバーライドするために何が行われたか。

于 2013-03-12T04:00:54.587 に答える