Klarstellung für benutzerdefinierte Attribute
-
22-10-2019 - |
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
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