2012-04-28 5 views
3

Magentoプロジェクトのカスタムモジュールが作成されました。このモジュールはMagento 1.6.Xで動作します。しかし、私はMagentoバージョン1.3.2.4にこの拡張機能をインストールしています。 Magentoは以下のエラーを投げます。Magentoバージョン1.3.2.4のdbModel読み取りリソースがZend_Db_Adapter_Abstractを実装していません

dbModel read resource does not implement Zend_Db_Adapter_Abstract 

多くのフォーラムでこの問題が説明されています。しかし残念ながら。私は結果が得られません。

キャッシュをクリアしました、再インデックスされました。これを解決するために他に何をすべきですか?

varフォルダ許可が設定されているです。新鮮なMagentoのインストールでも試しましたが、同じエラーです。

ありがとうございました。

+0

私は自分の問題を理解しました。大文字と小文字の区別があります。モジュールノードを小文字で使用しました。私はそれをキャップとして変更します。正常に動作します。ご協力いただきありがとうございます。私は両方の答え+1を与える。 – Gowri

答えて

5

このバージョンのMagento(1.3.2.4)では、config.xmlファイルに読み取りと書き込みの接続を指定する必要があります。 <global>の下

、そのよう<resources>ノードを追加します。

<resources> 
    <yourModelNode_write> 
     <connection> 
      <use>core_write</use> 
     </connection> 
    </yourModelNode_write> 
    <yourModelNode_read> 
     <connection> 
      <use>core_write</use> 
     </connection> 
    </yourModelNode_read> 
</resources> 

あなたのキャッシュを更新することを確認してください!

このタイプの構成は、Magentoのそれ以降のリリースではオプションです。あなたの設定でそれらを指定しなければ、システムはデフォルトの読み書き接続を読み込みます。私は正確にいつこの機能が実装されたのか分かりませんが、それは1.6.xにあります。

1.3.2.4と1.6.xの違いは、Mage_Core_Model_Resource :: getConnection()にあります。

Mage_Core_Model_Resource ::のgetConnection()

$connConfig = Mage::getConfig()->getResourceConnectionConfig($name); 

if (!$connConfig) { 
    $this->_connections[$name] = $this->_getDefaultConnection($name); 
    return $this->_connections[$name]; 
} 

1.3.2:

1.6.xのは、あなたのconfig.xmlで指定していない場合、デフォルトは/書き込み接続を読んで返します。4 falseを返します。

$connConfig = Mage::getConfig()->getResourceConnectionConfig($name); 

if (!$connConfig || !$connConfig->is('active', 1)) { 
    return false; 
} 

あなたは "はZend_Db_Adapter_Abstractを実装していません" というエラーがVarien_Data_Collection_Dbに位置しております理由:: setConnectionを():falseは、接続として渡され

public function setConnection($conn) 
{ 
    if (!$conn instanceof Zend_Db_Adapter_Abstract) { 
     throw new Zend_Exception('dbModel read resource does not implement Zend_Db_Adapter_Abstract'); 
    } 

    $this->_conn = $conn; 
    $this->_select = $this->_conn->select(); 
} 

($ conn)、それはもちろん - falseがZend_Db_Adapter_Abstractのインスタンスではないため、このエラーが発生します。

+1

いい実験のように聞こえますが、私のconfig.xmlにリソース設定があります – Gowri

+1

私は1.7を持っていて、同じエラーがあります。間違いなく私の設定で何かが欠けている。どんな助け? – Kostanos

2

dbModelクラスは、Zend_Db_Adapter_Abstractを実装する必要があります。これはインターフェイスと呼ばれるものです。インターフェイスの詳細を知りたければ、PHP(http://php.net/manual/en/language.oop5.interfaces.php)にどのように関連しているかを見てください。

だから、基本的にはどんなdbModelそのクラス定義の後にクラス名の後に "実装するZend_Db_Adapter_Abstract"が含まれていることを確認する必要があります。

モジュールで達成しようとしていることがわからなくても、私はあなたに伝えることができます(基本的にエラーを説明します)。私はdbModelがMagentoのコアオブジェクトであるという疑いを持っています。その場合、Magentoの2つのバージョン間の非互換性に巻き込まれていると私は信じています。

ただし、dbModelがクラスの1つである場合は、クラス定義に実装を追加するとエラーが解決されます。

+0

:このチュートリアルでは、http://www.magentocommerce.com/wiki/5_-_modules_and_development/0_-module_development_in_magento/custom_module_with_custom_database_tableを使用して管理モジュールを作成しました。何がここに欠けている。 – Gowri

+0

私はどのファイルを実装するべきですか。 – Gowri

9

私の場合、単に助けて MAGENTO_ROOT/var/cache/directoryの下のファイル/ディレクトリをクリアすることで問題が解決されました。

dbModel read resource does not implement Zend_Db_Adapter_Abstract

+0

Googleを介してこの記事を見つけました。これを見つけた人は、キャッシュファイルをクリアすると、2013年10月にMagento 1.8.0.0のエラーが取り除かれました。 –

関連する問題