2012-01-25 2 views
0

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

Я копирую этот файл: C: \ wamp \ www \ magento \ app \ code \ core \ Mage \ Adminhtml \ Block \ Customer \ Edit \ Accounts.php к: C: \ WAMP \ WWW \ Magento \ приложение \ кода \ Local \ my_project \ Adminhtml \ Block \ Customer \ 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 \ приложение \ код \ Local \ my_project \ Adminhtml \ и т.д.

<?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 сэкономить на .../приложение/и т.д./модули папки

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

является примером My_Project_Adminhtml или фактическим значением, которое вы пытаетесь использовать? Вы не должны использовать подчеркивание в разделе пространства имен, иначе он будет ожидать, что путь ко всем вашим классам будет My \ Project \ Adminhtml –

+0

его просто примером, значение на самом деле всего лишь 1 слово, например Planet_Adminhtml ... извините, чтобы ввести вас в заблуждение , – Jediscript

ответ

1

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

<adminhtml> 
    <rewrite> 
     <customer_edit_tab_account>My_Project_Adminhtml_Block_Customer_Edit_Tab_Account</customer_edit_tab_account> 
    </rewrite> 
</adminhtml> 
+0

Вау! Вот и все. Спасибо большое. Я новичок в magento, новичок и XML, ошибка новичка, я думаю ... Еще раз спасибо: D – Jediscript

+0

Это легко сделать, большинство мест в xml пробелы не имеют значения, –

+0

@Cags У меня также такая же фатальная ошибка. Где этот файл находится точно? –

0

Убедитесь, что все ваши файлы 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: 
+0

Я добавил config.xml и My_Project_Adminhtml.xml для вашей справки ... Я действительно безнадежен с этим ... :-( – Jediscript

+0

не было зарегистрировано ошибок в моей системе.log – Jediscript