Frage

Insbesondere bin ich daran interessiert, möglicherweise überschreibend _isAllowed() so dass es standardmäßig ist false Anstatt von true. Die meisten Dinge, die ich gefunden habe, beziehen sich auf überschreibende Controller mit der Übergabe des Controllers einer bestimmten Route, aber ich denke nicht, dass dies hier gilt.

Der Grund, warum ich dies tun möchte, ist, dass in Fall der dritten Parteimodule, die ich nicht entwickelt habe, nicht implementiert wurde _isAllowed() In ihren Controllern werden sie standardmäßig nicht zugänglich sind.

Ich weiß, dass dies eine ziemlich niedrige Veränderung ist, um die Dinge im Kern zu brechen. In diesem Fall kann ich es möglicherweise nicht tun. Aber ich werde das offensichtlich testen, sobald ich es implementiert habe.

Ich sah die Logik im Inneren ein bisschen an Mage_Core_Controller_Varien_Router_Standard::match() aber nichts zu sehen, was hilft.

War es hilfreich?

Lösung

Dies ist eine Klasse, die sich viele andere Klassen erweitern, sodass sie nicht leicht überlastet werden kann (ähnlich wie Basismodelle oder abstrakte Klassen).

Wenn Sie dieses Verhalten wirklich ändern wollten, müssten Sie die gesamte Quelle kopieren und einfügen und einfügen und in die Innere platzieren app/code/local/Mage/Adminhtml/Controller/Action.php.

Es wird empfohlen, "ordnungsgemäß" Magento Convention zu folgen und die umzusetzen _isAllowed Methode in Ihren benutzerdefinierten Controller -Klassen. Für die Sicherung von Drittanbietermodulen wird der obige Ansatz funktionieren, aber Sie werden absichtlich das Upgrade erschweren. Ein "sauberer" Ansatz wäre, wie Sie erwähnt haben, um den Controller der einzelnen Route umzuschreiben. Dies könnte viel Anstrengung und Zeit beinhalten, Sie müssen die Linie für jedes Projekt angemessen ziehen.

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