2010-09-05 3 views
0

J'ai réalisé un thème personnalisé en copiantsymfony doctrine: generate-module thème personnalisé: ne peut pas trouver des modèles pour le champ embarqué i18n

plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/default" 

dans

plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/mytheme1" 

J'ai changé les modèles pour correspondre à mes besoins (pas de tables, les erreurs personnalisées s'affichent et ainsi de suite).

./symfony doctrine:generate-module --theme=mytheme1 frontend user User 

fonctionne comme je m'y attendais si j'ajoute

$this->embedI18n(array('en','fr')); 

à la formeclasse le générateur rend la forme intégrée I18n avec et.

D'où cela vient-il? Comment puis-je le personnaliser? où se trouvent les fichiers modèles pour les formulaires incorporés i18n?

Merci beaucoup, Massimo

Répondre

1

Tout d'abord ce n'est pas la meilleure idée de surcharger un thème dans le plug-in lui-même. Les plugins ne doivent pas être touchés pour permettre de futures mises à jour. Vous pouvez facilement surcharger le thème dans votre application.

Deuxièmement, quelque chose semble manquer dans votre message: "à la classe de formulaire, le générateur rend la forme I18n avec et."

Les indicateurs de traduction manquants sont peut-être affichés?

+0

oui il y a quelque chose qui manque! Il utilise des cellules de tableau et des lignes de tableau même si je les ai détachées de mon modèle personnalisé. Je ne peux pas savoir d'où viennent-ils – Massimo

+0

Après avoir résolu tous ces problèmes, je vais déplacer mon thème dans mon projet. Merci pour vos conseils cependant! – Massimo

+0

Est-ce une lettre "T" entre "[" et "]"? Si c'est que c'est juste un indicateur de traduction manquant (configuré et activé dans factories.yml). –

1

Le modèle est défini dans le formateur du widgetSchema de votre formulaire i18n. Par défaut, il est réglé sur sfWidgetFormSchemaFormatterTable qui contient la définition de ce que vous recherchez:

class sfWidgetFormSchemaFormatterTable extends sfWidgetFormSchemaFormatter 
{ 
    protected 
    $rowFormat  = "<tr>\n <th>%label%</th>\n <td>%error%%field%%help%%hidden_fields%</td>\n</tr>\n", 
    $errorRowFormat = "<tr><td colspan=\"2\">\n%errors%</td></tr>\n", 
    $helpFormat  = '<br />%help%', 
    $decoratorFormat = "<table>\n %content%</table>"; 
} 

Vous pouvez changer en éditant votre formulaire i18n initialisation de classe. Par exemple, si vous voulez afficher les champs dans une liste:

public function setup() 
{ 
    parent::setup(); 

    $formatter = new sfWidgetFormSchemaFormatterList($this->getWidgetSchema()); 

    $this->getWidgetSchema()->addFormFormatter('list', $formatter); 
    $this->getWidgetSchema()->setFormFormatterName('list'); 
} 

Vous pouvez également définir votre propre formatter héritant de sfWidgetFormSchemaFormatter en fonction de vos préférences de mise en page.

Questions connexes