2012-11-20 13 views
11

Ho difficoltà a sovrascrivere le etichette utilizzate dal bundle utente FOS per Symfony2.Come sovrascrivere le etichette dei moduli bundle utente FOS

Sto già sovrascrivendo la classe Form, ma non ci sono opzioni per elementi come "setOption", solo getter.

Posso semplicemente rimuovere un elemento e aggiungerlo di nuovo con l'etichetta corretta, ma questo sembra un eccessivo. C'è un modo carino di sovrascrivere le opzioni sugli elementi del modulo, o solo le chiavi di traduzione, forse?

risposta

30

Non è necessario sovrascrivere le classi modulo.

Copia/incolla i file vendor/friendsofsymfony/user-bundle/FOS/UserBundle/Resources/translations/FOSUserBundle.xx.yml nella directory app/Resources/translations (con la stessa struttura di directory e lo stesso nome file) e ridefinire le traduzioni a proprio piacimento.

modifica: Come detto da @ mario-johnathan, le traduzioni sovrascritte non fanno parte dell'ereditarietà del pacchetto. Vedere http://symfony.com/doc/current/cookbook/bundles/override.html#translations per la documentazione ufficiale

+1

impressionante, grazie bro! –

+5

In realtà dovevo copiarlo in app/Resources/FOSUserBundle/translation invece del mio bundle dir per farlo funzionare, –

+0

Sì hai ragione! – AlterPHP

0

Come già detto è possibile mettere le vostre traduzioni dei file in:
app/Resources/translations

Ma se si ignora nel vostro pacco padre (src/MyAppBundle/Resources/translations) o in qualsiasi altro bundle, assicurati di carico il vostro pacco dopo il fascio sottoposto a override in vostro kernel:

public function registerBundles() 
{ 
    $bundles = [ 
     ... 
     new FOS\UserBundle\FOSUserBundle(), 
     new MyAppBundle\MyAppBundle(), 
     ... 
    ]; 
... 
} 
Problemi correlati