2

Magento の管理領域内で phtml ファイルをオーバーライドしようとしています。具体的には、オーバーライドしようとしているファイルは次のとおりです: app/design/adminhtml/default/default/template/catalog/form/renderer/fieldset/element.phtml

app/code/local/CompanyName/Website/etc/config.xmlには、次のものがあります。

<rewrite>
    <catalog_form_renderer_fieldset_element>CompanyName_Website_Block_Adminhtml_Catalog_Form_Renderer_Fieldset_Element</catalog_form_renderer_fieldset_element>
</rewrite>

app/code/local/CompanyName/Website/Block/Adminhtml/Catalog/Form/Renderer/Fieldset/Element.phpに配置したオーバーライド ブロック PHP ファイル。このファイルには以下が含まれます。

<?php

class CompanyName_Website_Block_Adminhtml_Catalog_Form_Renderer_Fieldset_Element extends Mage_Adminhtml_Block_Widget_Form_Renderer_Fieldset_Element
{
    public function _construct()
    {
        parent::_construct();

        $this->setTemplate('catalog/form/renderer/fieldset/element.phtml');
    }
}

最後に、オーバーライド テンプレート ファイルはapp/design/frontend/enterprise/CompanyName/template/catalog/form/renderer/fieldset/element.phtmlにあり、オーバーライドする実際のテンプレートが含まれています。

白い画面が表示され、ログに次のエラーが記録されます。Fatal error: Allowed memory size of 268435456 bytes exhausted (tried to allocate 227543041 bytes) in /var/www/html/gold/lib/Varien/Object.php on line 569

何かご意見は?適切なクラスを拡張していますか? ファイルは正しく配置されていますか? <rewrite>など。同じconfig.xmlファイル内に他のブロックがあり、それらは正常に機能するため、間違いを犯しているに違いありません!

ありがとう。

4

1 に答える 1

1

これはいくつかの理由で奇妙です。

このブロックのテンプレートを変更したいだけのようです。デフォルトのテンプレート「widget/form/renderer/fieldset/element.phtml」を上書きしないのはなぜですか?

print_r($someObject->getData()); のようなものを持っていませんか? コンストラクタまたはテンプレートのどこかに?

さらに、Mage_Adminhtml_Block_Widget_Form_Renderer_Fieldset_Element::_construct() は単にテンプレート ファイルを設定するだけなので、おそらくparent::_construct() を呼び出す理由はありません。

コンストラクターとテンプレート ファイルにいくつかの error_log() を設定して、それらが確実に呼び出されるようにしましたか? そのテンプレートへの完全なパスは何ですか? つまり、/app/design/adminhtml/default/default... のようなものですか? または /app/design/adminhtml/company/...? 後者の場合、adminhtml テンプレートのオーバーライドを許可する適切な構成が整っていると思いますか?

/lib/Varien/Object.php の 569 行目で何が起こっているのでしょうか? (その行はコメントにあり、関連していないように見えるものであるため、私のものは別のバージョンである必要があります)


編集: adminhtml テンプレートをオーバーライドするには。これを /app/etc/local.xml の < config > ノードに追加します。

<stores>
    <admin>
        <design>
            <package>
                <name>default</name>
            </package>
            <theme>
                <default>companyname</default>
            </theme>
        </design>
    </admin>
</stores>

/app/design/adminhtml/default/ に「companyname」という名前のフォルダーを作成し、テーマと同様に「template」、「layout」などのフォルダーをその中に入れます。たとえば、 /app/design/adminhtml/default/companyname/template/widget/form/renderer/fieldset/element.phtml の場合です。

于 2012-12-18T17:26:37.733 に答える