Frage

Ich arbeite in einem benutzerdefinierten Modul und verwende, was ich in meiner benutzerdefinierten Registerkarte benutzerdefinierte Attribute hinzufügen möchte. Indem ich viele Tutorials durchnehme, habe ich benutzerdefinierte Attribut erstellt und es erfolgreich in einer der Standardregisterkarte im Kundenabschnitt in Admin ausgeben. Jetzt möchte ich es in meiner benutzerdefinierten Registerkarte anzeigen.

Ich brauche jedoch eine Klarstellung zu benutzerdefinierten Attributen dafür. Im Folgenden sind meine Kundenattributdetails, die ich gewaltsam in Admin -Seite gedruckt habe ...

Array
(
[attribute_id] => 961
[entity_type_id] => 1
[attribute_code] => nick_name
[attribute_model] => 
[backend_model] => 
[backend_type] => varchar
[backend_table] => 
[frontend_model] => 
[frontend_input] => text
[frontend_label] => Nick Name
[frontend_class] => 
[source_model] => 
[is_required] => 0
[is_user_defined] => 1
[default_value] => 
[is_unique] => 0
[note] => 
[is_visible] => 1
[input_filter] => 
[multiline_count] => 0
[validate_rules] => 
[is_system] => 1
[sort_order] => 100
[data_model] => 
[entity_type] => Mage_Eav_Model_Entity_Type Object
    (
        [_attributes:protected] => 
        [_attributesBySet:protected] => Array
            (
            )

        [_sets:protected] => 
        [_eventPrefix:protected] => core_abstract
        [_eventObject:protected] => object
        [_resourceName:protected] => eav/entity_type
        [_resource:protected] => 
        [_resourceCollectionName:protected] => eav/entity_type_collection
        [_cacheTag:protected] => 
        [_dataSaveAllowed:protected] => 1
        [_isObjectNew:protected] => 
        [_data:protected] => Array
            (
                [entity_type_id] => 1
                [entity_type_code] => customer
                [entity_model] => customer/customer
                [attribute_model] => customer/attribute
                [entity_table] => customer/entity
                [value_table_prefix] => 
                [entity_id_field] => 
                [is_data_sharing] => 1
                [data_sharing_key] => default
                [default_attribute_set_id] => 1
                [increment_model] => eav/entity_increment_numeric
                [increment_per_store] => 0
                [increment_pad_length] => 8
                [increment_pad_char] => 0
                [additional_attribute_table] => customer/eav_attribute
                [entity_attribute_collection] => customer/attribute_collection
            )

        [_hasDataChanges:protected] => 1
        [_origData:protected] => 
        [_idFieldName:protected] => entity_type_id
        [_isDeleted:protected] => 
        [_oldFieldsMap:protected] => Array
            (
            )

        [_syncFieldsMap:protected] => Array
            (
            )

    )

 )

Meine Fragen sind

1) Wie kann ich dieses benutzerdefinierte Attribut in meiner benutzerdefinierten Registerkarte anzeigen? Zum Beispiel:

if (version_compare(Mage::getVersion(), '1.4.2', '>='))
{
Mage::getSingleton('eav/config')
    ->getAttribute('customer', 'nick_name')
    ->setData('used_in_forms', array('adminhtml_customer','mysite_custmernewtab',))
    ->save();
}

wo mysite_customernewtab ist mein Modul. Ob diese Methode automatisch Eingangsfeld in meinem benutzerdefinierten Modul druckt? Oder ist es notwendig, dass ich dieses Feld manuell durch benutzerdefinierte PHTML -Datei laden möchte?

2) Ich habe gesehen frontend_label,frontend_input Daten in der Ausgabe. Ob es verwendet werden kann, um das Eingangsfeld auf Admin -Seite zu drucken? oder ist da backend_input, backend_label Ähnlich wie in diesem?

3) Was ist das? source und backend Daten? Ich habe diese Elemente gesehen, wenn ich ein Attribut über ein Setup -Datei hinzufügt.

Bitte helfen Sie mir, dies zu verstehen ... es wird auch anderen helfen. Vielen Dank im Voraus

War es hilfreich?

Lösung

Erstens der Abschnitt für used_in_forms ist wirklich nur für das Formular und nicht für die Registerkarte, also sollten Sie den zweiten Abschnitt entfernen.

 ->setData('used_in_forms', array('adminhtml_customer'))

Neue Administrator -Registerkarte - über Layout XML

Mit dem folgenden Layout XML können Sie dem Kundenformular eine neue Registerkarte hinzufügen. Sie können ein neues Modul mit einem AdminHtML -Layout -Update hinzufügen, das Folgendes enthält.

<layout version="0.1.0">
  <adminhtml_customer_edit>
     <reference name="customer_edit_tabs">
        <action method="addTab">
          <name>customer_edit_tab_new</name>
          <block>your_module/adminhtml_customer_edit_tab_new</block>
        </action>
     </reference>
  </adminhtml_customer_edit>
</layout>

Dies fügt eine neue Registerkarte vom Typ hinzu Your_Module_Block_Adminhtml_Customer_Edit_Tab_New. Dann können Sie einfach Ihre Registerkarte im selben Format wie erstellen wie Mage_Adminhtml_Block_Customer_Edit_Tab_Newsletter und dies wird die neue Registerkarte hinzufügen.

Neue Administrator -Registerkarte - über PHP

Wenn Sie dem Kundenbearbeitungsformular im Administrator eine neue Registerkarte hinzufügen möchten, müssen Sie zunächst umschreiben Mage_Adminhtml_Block_Customer_Edit_Tabs Damit können Sie der Funktion einen neuen Abschnitt hinzufügen _beforeToHtml. Hier können Sie so etwas hinzufügen.

$this->addTab('new_tab_name', array(
    'label'     => Mage::helper('your_module')->__('New Tab Name'),
    'content'   => $this->getLayout()->createBlock('your_module/adminhtml_customer_edit_tab_new')->initForm()->toHtml(),
    'active'    => Mage::registry('current_customer')->getId() ? false : true
));

Auch dies fügt eine neue Registerkarte vom Typ hinzu Your_Module_Block_Adminhtml_Customer_Edit_Tab_New. Dann können Sie einfach Ihre Registerkarte im selben Format wie erstellen wie Mage_Adminhtml_Block_Customer_Edit_Tab_Newsletter und dies wird die neue Registerkarte hinzufügen.

Meiner Meinung nach ist das Layout XML die sauberste Lösung, da es keinen Code umschreibt, aber ich dachte, ich würde beide erwähnen, da es gut ist, alle Optionen zu sehen. Es gibt auch ein gutes Tutorial dazu, das er finden kann hier

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit magento.stackexchange
scroll top