Question

J'ai un problème bizarre avec mon schéma de doctrine i18n et i.a. le générateur d'administration.

(S'il vous plaît regarder la partie d'édition ci-dessous en premier)

Les regards de schéma comme:

CargoSize:
  connection: doctrine
  actAs:
    Timestampable:      ~
    I18n:
      fields:                   [name, linkname, seoname, description]
  tableName: com_cargo_size
  columns:
    id:                                     { type: integer(11), notnull: true, unsigned: true, primary: true, autoincrement: true }
    name:                                   { type: string(50),  notnull: true }
    linkname:                               { type: string(100), notnull: true }
    seoname:                                { type: string(100), notnull: true }
    description:                            { type: string(255), notnull: true }

Le premier problème que j'ai avec sfForms:

new sfWidgetFormDoctrineChoice(array('model' => 'CargoSize', 'expanded' => true, 'multiple' => false), array('style' => 'list-style-type: none; display: inline;'))

Cela génère une radio Butten avec les ID corrects, mais les valeurs de nom vides. Même lorsque je tente d'obtenir la valeur de nom en sélectionnant directement un objet CargoSize par ID et LANG, getName () retourne toujours une chaîne vide (DB est correctement rempli de données approprié).

est somethng worng avec la définition du schéma ??

Le deuxième problème apparaît avec l'administrateur générateur:

php symfony doc:generate-admin --module=cargo_size admin CargoSize

Les regards generator.yml comme:

generator:
  class: sfDoctrineGenerator
  param:
    model_class:           CargoSize
    theme:                 admin
    non_verbose_templates: true
    with_show:             false
    singular:              ~
    plural:                ~
    route_prefix:          cargo_size
    with_doctrine_route:   true
    actions_base_class:    sfActions

    config:
      actions: ~
      fields:  ~
      list:
        display: [name, lang]
      filter:  ~
      form:    ~
      edit:
        display: [name]
      new:     ~

Le plus drôle est que la vue liste me montre le nom i18n. Mais en vue de modifier je reçois toujours l'erreur "widget 'name' n'existe pas" .

Avez-vous les gars ont une idée pourquoi cela se produit? Je serais très reconnaissant pour votre aide.

EDIT:

Je pense que le problème se trouve plus profond, parce que ce simple paix de code ne fonctionne note:

D'abord les ensembles de données pour les exemples:

cargo_size
id  created_at              updated_at
1   2010-04-22 21:37:44     2010-04-22 21:37:44

cargo_size_translation
id      name    linkname    seoname     description     lang
1       klein   klein       klein       klein           de
1       small   small       small       small           en

$c = Doctrine::getTable('CargoSize')->findOneBy('id', 1); 
echo $c;  // (toString exists)

// Output: Catchable fatal error: Method CargoSize::__toString() 
// must return a string value in 
// /var/www/.../apps/frontend/modules/start/templates/indexSuccess.php on line 1

echo $c->getName();
// Output: nothing

quelqu'un n'a une idée? Je suis vraiment deperated: (

Était-ce utile?

La solution 2

J'ai trouvé le bogue. Pour une raison quelconque la culture a été réglée sur " de_DE " au lieu de "de". Avec ce réglage, les choses de comportement i18n n'a pas marché!

Autres conseils

Premier problème:

Les « noms de valeurs » affichés sont prises à partir du résultat de la méthode __toString (). Vous pouvez ajouter les options « méthode », comme ceci:

new sfWidgetFormDoctrineChoice(array('model' => 'CargoSize', 'expanded' => true, 'multiple' => false, 'method' => 'getName'), array('style' => 'list-style-type: none; display: inline;'))

Deuxième problème:

Votre formulaire doit intégrer le formulaire i18n. Pour ce faire, mettre cela dans la méthode de configuration:

$this->embedI18n($cultures);

où $ cultures est un tableau de vos codes de cultures.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top