Domanda

In particolare mi interessa potenzialmente sovrascrivendo _isAllowed() in modo che il valore predefinito al posto di false true. La maggior parte delle cose che ho trovato relativi a override controllori che fare con il modo di ignorare il controllore di un percorso specifico, ma non credo che si applica qui.

Il motivo che voglio fare questo è così che nel caso dei moduli 3a parte che non ho sviluppato non hanno attuato _isAllowed() nei loro controllori, verranno impostati a non essere accessibili.

So che questo è un cambiamento piuttosto di basso livello per fare e potrei rompere le cose nel nucleo, nel qual caso potrei non essere in grado di farlo. Ma io, ovviamente, prova che una volta che la sua attuazione.

ho guardato un po 'alla Mage_Core_Controller_Varien_Router_Standard::match() logica interna, ma non vedere tutto ciò che aiuta.

È stato utile?

Soluzione

Questa è una classe che molte altre classi estendono in modo che non può essere facilmente sovraccarico (simile a modelli base o classi astratte).

Se si voleva davvero cambiare questo comportamento sarebbe necessario copiare e incollare l'intero sorgente e posizionarlo all'interno della app/code/local/Mage/Adminhtml/Controller/Action.php.

Si raccomanda di seguire "propria" convention Magento e implementare il metodo _isAllowed nelle classi controller personalizzati. Per il fissaggio dei moduli 3rd party, l'approccio di cui sopra funzionerà ma sarà volutamente rendere l'aggiornamento più difficile. Un approccio più "pulito" sarebbe come lei ha ricordato di riscrivere il controllore di ciascun percorso specifico. Ciò potrebbe comportare un sacco di fatica e tempo, si deve tracciare la linea in modo appropriato per ogni progetto.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a magento.stackexchange
scroll top