Ошибка Magento при переопределении в локальной папке - PullRequest
0 голосов
/ 25 января 2012

Это сообщение об ошибке: Неустранимая ошибка: вызов функции-члена initForm () для необъекта в C: \ wamp \ www \ magento \ app \ code \ core \ Mage \ Adminhtml \ Block \ Customer \ Edit \ Tabs.php в строке 58

Я копирую этот файл: C: \ WAMP \ WWW \ Magento \ приложение \ код \ ядро ​​\ Mage \ Adminhtml \ Block \ Customer \ Edit \ Accounts.php чтобы: C: \ WAMP \ WWW \ Magento \ приложение \ код \ Local \ my_project \ Adminhtml \ Block \ Клиент \ Edit \ Tab \ Accounts.php

, затем редактируйте только эту функцию:

<?php

class My_Project_Adminhtml_Block_Customer_Edit_Tab_Account extends Mage_Adminhtml_Block_Customer_Edit_Tab_Account
{

    public function initForm()
    {   
        Mage::log('Debug1: _initForm was called',null,'globe.log');

        $form = new Varien_Data_Form();
        $form->setHtmlIdPrefix('_account');
        $form->setFieldNameSuffix('account');

        $customer = Mage::registry('current_customer');

        /* @var $customerForm Mage_Customer_Model_Form */
        $customerForm = Mage::getModel('customer/form');
        $customerForm->setEntity($customer)
            ->setFormCode('adminhtml_customer')
            ->initDefaultValues();

        $fieldset = $form->addFieldset('base_fieldset',
            array('legend'=>Mage::helper('customer')->__('Account Information'))
        );

        $attributes = $customerForm->getAttributes();

        //Start of edit//
        //Remove the Un-needed labels from the Customer Information Form
        //These are the codes that I added:

        unset($attributes['prefix']);
        unset($attributes['firstname']);
        unset($attributes['middlename']);
        unset($attributes['lastname']);
        unset($attributes['suffix']);
        unset($attributes['taxvat']);
        unset($attributes['dob']);
        unset($attributes['gender']);

        //End of edit//

        foreach ($attributes as $attribute) {
            $attribute->unsIsVisible();
        }
        $this->_setFieldset($attributes, $fieldset);

        /**Usual codes continues here**/

это коды в строке 56-60 файла Tabs.php

$this->addTab('account', array(
        'label'     => Mage::helper('customer')->__('Account Information'),
        'content'   => $this->getLayout()->createBlock('adminhtml/customer_edit_tab_account')->initForm()->toHtml(),
        'active'    => Mage::registry('current_customer')->getId() ? false : true
    ));

Здесь я хочу удалить имена, почтовые индексы, страну, пол и т. Д. Из формы информации об учетной записи, останется только электронная почта.

Если я делаю все это в файлах Core, все прошло хорошо, но если я пытаюсь переопределить это и сохранить его в локальной папке, эта ошибка возникает.

P.S. Я также добавляю config.xml в свой локальный каталог и добавляю xml в C: \ wamp \ www \ magento \ app \ etc \ modules с именем My_Project_Adminhtml.xml

Заранее спасибо всем, кто поможет.

это мой файл config.xml, сохраненный на C: \ wamp \ www \ magento \ app \ code \ local \ My_Project \ Adminhtml \ etc

    <?xml version="1.0" ?>
<config>
    <modules>
        <My_Project_Adminhtml>
            <version>1.0</version>
        </My_Project_Adminhtml>
    </modules>
    <global>
        <blocks>
            <adminhtml>
                <rewrite>
                    <customer_edit_tab_account>
                        My_Project_Adminhtml_Block_Customer_Edit_Tab_Account
                    </customer_edit_tab_account>
                </rewrite>
            </adminhtml>
        </blocks>
    </global>
</config>

это мой модуль xml save в ... / app / etc / modules folder

    <?xml version="1.0" ?>
<config>
    <modules>
        <My_Project_Adminhtml>
            <active>true</active>
            <codePool>local</codePool>
        </My_Project_Adminhtml>
    </modules>
</config>

Ответы [ 2 ]

1 голос
/ 26 января 2012

Если ваш файл конфигурации имеет такой же макет, как этот, вам, вероятно, потребуется удалить пробел, окружающий имя класса, чтобы он был единственным в узле.

<adminhtml>
    <rewrite>
        <customer_edit_tab_account>My_Project_Adminhtml_Block_Customer_Edit_Tab_Account</customer_edit_tab_account>
    </rewrite>
</adminhtml>
0 голосов
/ 25 января 2012

Убедитесь, что все ваши XML-файлы являются правильными XML, у меня было то же самое, что произошло 2 дня назад, потому что я неправильно написал закрывающий тег.Если это вызывает ошибку, вы увидите что-то вроде следующего в вашем system.log

2012-01-23T04:40:31+00:00 ERR (3): Warning: simplexml_load_string(): Entity: line 56: parser error : Opening and ending tag mismatch: 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...