ho bisogno di sovrascrivere il file /vendor/symfony/symfony/src/Symfony/Bundle/TwigBundle/Extension/AssetsExtension.phpQual è il modo "giusto" per ignorare un'estensione symfony da un altro fascio
Si carica il getAssetUrl ramoscello dal fascio tramite la funzione ramoscello 'patrimoniale'
/**
* Returns a list of functions to add to the existing list.
*
* @return array An array of functions
*/
public function getFunctions()
{
return array(
new \Twig_SimpleFunction('asset', array($this, 'getAssetUrl')),
new \Twig_SimpleFunction('assets_version', array($this, 'getAssetsVersion')),
);
}
voglio ignorare la funzione ramoscello di asset() senza toccare i file di base, che altrimenti sarebbe venir meno per il prossimo aggiornamento symfony
Invece di duplicare la definizione di servizio si può anche solo impostare il parametro di twig.extension.assets.class per puntare alla nuova classe di estensione. Ma il passaggio del compilatore è davvero la soluzione migliore. In realtà, dubito della necessità di cambiare getAssertUrl. Probabilmente causerà più problemi di quanti ne valga la pena, specialmente se si utilizzano modelli di terze parti. Prendi in considerazione solo la scrittura della tua estensione e funzione. – Cerad
Sì, è vero. Puoi anche impostare parametro twig.extension.assets.class con estensione personalizzata. La domanda era chiara: come sovrascrivere asset() senza toccare il codice Symfony. Non ho davvero idea del caso d'uso perché user3531149 ne ha bisogno. – kba
La tua soluzione va bene. Spero che questo non sia un altro drive by. – Cerad