4

説明が見つからない問題に苦労しています。プロジェクトに使用する開発環境は2つあります。Magento用の簡単なモジュールを作成し、1つの環境でテストしました。Magentoのすべての複雑さを克服した後、モジュールは期待どおりに機能します。これはXAMPPにあります。

次に、モジュールをホストされたサーバー上の開発用Linux環境にコピーしましたが、惨めにクラッシュしました。デバッグを行ったところ、Mage :: getModel()を呼び出すと、要求したモデルのインスタンスではなく、bool(false)が返されることがわかりました。

すべてのファイルとディレクトリを再確認しましたが、一致しています。データベースは関与せず(少なくとも私の側からはテーブルは必要ありません)、両方の環境には、管理者権限を持つユーザーとしての私だけがいます。

どこから探し始めるべきかについての提案は大歓迎です、ありがとう。

2012/07/09に追加
モデルにはDiego_ClientCustomModule_Model_ExternalUserData、で呼び出されるという名前のクラスが含まれてい$model = Mage::getModel('clientcustommodule/externaluserdata');ます。モデルファイルはにありますDiego_ClientCustomModule\code\local\Diego\ClientCustomModule\Model\。興味深いのは:

  • モデルファイルに名前Externaluserdata.phpを付けると、機能します。
  • モデルファイルに名前が付けられている場合ExternalUserData.php(つまり、クラス名と一致している場合)、機能しません。

大文字と小文字の区別などは知っていますが、エイリアスがすべて小文字の場合、最初の文字を大文字にしたファイルをロードするにはどうすればよいですか?

構成ファイル 0.1.0Diego_ClientCustomModule_HelperDiego_ClientCustomModule_ModelDiego_ClientCustomModule_Block標準Diego_ClientCustomModuleClientCustomModule

4

2 に答える 2

5

あなたが助けを求めているフレームワークについて嘲笑することは、助けを受けるための最良の戦略ではないかもしれません。

問題は、キャッシュ(var / cacheフォルダーを削除して確認する)または不適切な大文字と小文字のいずれかである可能性があります。オートローダーによってロードされるファイル(ブロック、モデル、およびヘルパー)の各ディレクトリとファイル名の最初の文字に注意してください。

于 2012-07-07T02:48:16.577 に答える
3

問題の根本的な原因を見つけたようですが、それを実現するためにどのようなロジックが実装されているのかわかりません。

モデルのファイル名はUserCustomModule.phpで、これはクラス名UserCustomModuleを反映しています。それは理にかなっており、XAMPPで素晴らしく機能しました。同じモジュールをLinuxボックスにインストールすると、Magentoはそのファイルを黙って無視し、前述のように、Magentoのアクションを追跡する方法はありませんでした。

ベンチマークの提案に続いて、私はすべてのファイルをもう一度調べてケーシングをチェックしましたが、すべてが一致しているように見えました。次に、私の意見では、完全にばかげたものを作成し、モデルファイルの名前をUsercustommodule.phpに変更し、クラス名は変更しませんでした(結局、PHPは、ファイルシステムとは異なり、両方のプラットフォームで同じように動作するはずです)。魔法のように、モジュールが機能するようになりました。ファイル名はcr*pに見えますが、機能します。

これで問題は解決しましたが、さらに多くの疑問が生じます。

  • MagentoがCamelCase名のファイルをロードするのに問題があるのはなぜですか?自動読み込みの場合は、ファイルを見つけて読み込むだけです。結局のところ、それはコントローラー、ブロック、その他すべてをロードし、それらはすべてキャメルケースにあります。
  • 1つまたは複数のファイルの最初の文字だけを大文字にする必要があるとどこかに書かれていますか?私はすでに十分な驚きを得ました、私は可能であれば新しいものを避けたいです。

助けてくれてありがとう。

于 2012-07-07T10:24:10.250 に答える