Wie zeige ich Hinweise mit addSuccess() und addNotice() auf der Konfigurationsseite an?
-
19-12-2019 - |
Frage
Ich möchte Erfolgs- und Fehlerbenachrichtigungen anzeigen mit Mage::getSingleton('core/session')->addSuccess()
Und ->addError()
wenn sich der Administrator in einem bestimmten Konfigurationsabschnitt befindet.
Der Grund:Ich habe eine Erweiterung erstellt, die eine hat separater Abschnitt in System/Konfiguration, und ich möchte eine Rückmeldung geben, ob es richtig konfiguriert ist oder nicht, aber Nur wenn sich der Administrator in diesem Abschnitt befindet.
Ich habe versucht, einen default.notifications-Block zu erstellen, was funktioniert hat, aber die Benachrichtigung war eine „globale Benachrichtigung“ und kein kleineres Benachrichtigungsfeld, das sich oben in den Einstellungsfeldern der Einstellungsfelder meiner Erweiterungen befand.Auch:Ich möchte diese Benachrichtigungen nur hinzufügen, wenn sich der Administrator auf der Konfigurationsseite dieses bestimmten Abschnitts befindet.
Danke!
Lösung
Der Nachrichtenbereich, auf den Sie sich beziehen
wird bevölkert von Mage_Adminhtml_System_ConfigController::saveAction
.
Bevor die Nachricht gesetzt wird, muss ein Ereignis ("admin_system_config_changed_section_{$section}
) wird gefeuert.
Code-Referenz:
Mage::dispatchEvent("admin_system_config_changed_section_{$section}",
array('website' => $website, 'store' => $store)
);
$session->addSuccess(Mage::helper('adminhtml')->__('The configuration has been saved.'));
Sie müssen nur herausfinden, was in dem Abschnitt steht ($section = $this->getRequest()->getParam('section');
) und Sie könnten höchstwahrscheinlich ein spezifisches Ereignis für Ihre Abschnittsspeicherung auswählen.
Es gibt auch eine alternative Lösung:Verwenden Sie ein Hinweisfeld im Admin-Bereich.
Platzieren Sie eine HINT-Gruppe in Ihrer system.xml-Konfigurationsdatei.Ein Beispiel:
<hint>
<frontend_model>dyncatprod/adminhtml_system_config_fieldset_hint</frontend_model>
<sort_order>0</sort_order>
<show_in_default>1</show_in_default>
<show_in_website>1</show_in_website>
<show_in_store>1</show_in_store>
</hint>
Stellen Sie sicher, dass es die niedrigste Sortierreihenfolge hat.
Sie müssen die Blockklasse definieren. Unten sehen Sie ein Beispiel, das den Pfad gemäß dem XML-Beispiel zeigt.
Es muss eine Rendermethode enthalten
/**
* Render fieldset html
*
* @param Varien_Data_Form_Element_Abstract $element
*
* @return string
*/
public function render(Varien_Data_Form_Element_Abstract $element)
{
return $this->toHtml();
}
Sie können dann natürlich über Ihren Block alles ausgeben, was Sie brauchen, und jede beliebige Logik ausführen, die Sie brauchen adminhtml_system_config_fieldset_hint
Ein Beispiel, um einige Informationen über die installierte Erweiterung auszugeben: