4

データベーステーブルに値を挿入しようとしているmagento拡張機能を開発していますが、モデルがロードされていないという問題があります。

問題はsave()、コントローラーで関数を呼び出すと、ページに次のエラーが表示されることです。

Fatal error: Call to a member function beginTransaction() on a non-object in /var/www/magento/app/code/core/Mage/Core/Model/Abstract.php on line 313 

system.logファイルのエラーログを確認すると、次のエラーが表示されました。

Warning: include(Gwb/Magecrmsync/Model/Mysql4/Magecrmsync.php): failed to open stream: No such file or directory  in /var/www/magento/lib/Varien/Autoload.php on line 93

私はそれをグーグルで検索しましたが、答えが見つかりませんでした。助けてください

これが私のconfig.xmlコードです:

<?xml version="1.0"?>
<config>
<!-- turn on our module, required for install support -->
<modules>
<Gwb_Magecrmsync>
    <version>0.1.0</version>
</Gwb_Magecrmsync>
</modules>
<frontend>
<routers>
    <magecrmsync>
        <use>standard</use>
        <args>
            <module>Gwb_Magecrmsync</module>
            <frontName>magecrmsync</frontName>
        </args>
    </magecrmsync>
</routers>
<layout>
    <updates>
        <magecrmsync>
            <file>adminhtml.xml</file>
        </magecrmsync>
    </updates>
</layout>
</frontend>
<admin>
<routers>
    <magecrmsync>
        <use>admin</use>
        <args>
            <module>Gwb_Magecrmsync</module>
            <frontName>magecrmsync</frontName>
        </args>
    </magecrmsync>
</routers>
</admin>
<adminhtml>
<menu>
    <menu1 translate="title" module="magecrmsync">
        <title>Synchronize</title>
        <sort_order>999</sort_order>
        <children>
            <menuitem1 module="magecrmsync">
                <title>Customers</title>
                <action>magecrmsync/adminhtml_customers</action>
            </menuitem1>
            <menuitem2 module="magecrmsync">
                <title>Orders</title>
                <action>magecrmsync/adminhtml_orders</action>
            </menuitem2>
            <menuitem3 module="magecrmsync">
                <title>Products</title>
                <action>magecrmsync/adminhtml_products</action>
            </menuitem3>
            <menuitem4 module="magecrmsync">
                <title>Settings</title>
                <action>magecrmsync/adminhtml_settings</action>
            </menuitem4>
        </children>
    </menu1>
</menu>
<acl>
    <resources>
        <admin>
            <children>
                <menu1 translate="title" module="magecrmsync">
                    <title>Synchronize</title>
                    <sort_order>999</sort_order>
                    <children>
                        <menuitem1>
                            <title>Customers</title>
                        </menuitem1>
                        <menuitem2>
                            <title>Orders</title>
                        </menuitem2>
                        <menuitem3>
                            <title>Products</title>
                        </menuitem3>
                        <menuitem4>
                            <title>Settings</title>
                        </menuitem4>
                    </children>
                </menu1>
            </children>
        </admin>
    </resources>
</acl>
</adminhtml>
<global>
<!-- turn on models -->
<models>
    <magecrmsync>
        <class>Gwb_Magecrmsync_Model</class>
        <resourceModel>Magecrmsync_mysql4</resourceModel>
    </magecrmsync>
    <Magecrmsync_mysql4>
        <class>Gwb_Magecrmsync_Model_Mysql4</class>
        <entities>
            <magecrmsync>
                <table>magecrmsync</table>
            </magecrmsync>
        </entities>
    </Magecrmsync_mysql4>
</models>
<!-- turn on models -->

<!-- turn on database connections -->
<resources>
<!-- setup is needed for automatic installation -->
    <magecrmsync_setup>
        <setup>
            <module>Gwb_Magecrmsync</module>
        </setup>
        <connection>
            <use>core_setup</use>
        </connection>
    </magecrmsync_setup>
    <magecrmsync_write>
        <connection>
            <use>core_write</use>
        </connection>
    </magecrmsync_write>
    <magecrmsync_read>
        <connection>
            <use>core_read</use>
        </connection>
    </magecrmsync_read>
</resources>

<blocks>
    <magecrmsync>
        <class>Gwb_Magecrmsync_Block</class>
    </magecrmsync>
</blocks>

<helpers>
    <magecrmsync>
        <class>Gwb_Magecrmsync_Helper</class>
    </magecrmsync>
</helpers>

<layout>
    <magecrmsync>
        <file>adminhtml.xml</file>
    </magecrmsync>
</layout>

</global>
</config>

これが私のコントローラファイルの私の関数です:

public function settingsAction()
{
    if($this->getRequest()->getPost())
    {
        try
        {
            $login_info = Mage::getModel('magecrmsync/magecrmsync');
            $username = $this->getRequest()->getPost('username');
            $password = $this->getRequest()->getPost('password');

            $login_info->setUsername($username);
            $login_info->setPassword(md5($password));
            $login_info->save();

            Mage::getSingleton('adminhtml/session')->addSuccess("Login Information has been updated successfully.");                
        }
        catch(Exception $e)
        {
            Mage::getSingleton('adminhtml/session')->addError($e->getMessage());
        }
    }
    else
    {
        Mage::getSingleton('adminhtml/session')->addError("Error! Please try again.");
    }
    $this->_redirect('/*/*');
}

ここで、モデルをロードできない問題を特定できる人はいますか?

どんな助けでも大歓迎であり、私にとって役に立ちます。

前もって感謝します

4

2 に答える 2

4

24時間以上調査した後、ようやく機能するようになりました。フォルダーのアクセス許可が原因で、このエラー (ファイルが見つかりません) が発生していました。フォルダに許可を与えると、機能しました。私を助けてくれてありがとう。

于 2013-03-12T11:50:16.913 に答える
0

Magento は からファイルを読み込もうとします。これは、リソース モデルMage/Magecrmsync/Mysql4/Model/Magecrmsync.phpのエイリアス'magecrmsync/magecrmsync'を として解釈することを意味します。リソース モデル エイリアスをどのように構成したかを見てみましょう。Mage_Magecrmsync_Mysql4_Model_Magecrmsync

    <resourceModel>Magecrmsync_mysql4</resourceModel>

その後:

<magecrmsync_mysql4>

要素名は大文字と小文字が区別されるため、Magento はそれを検出せず、デフォルトの名前空間を持つクラス エイリアスとして解釈しますMage

于 2013-03-12T09:48:56.550 に答える