Générateur Admin: pourquoi je ne peux pas afficher l'état d'un article, au lieu de state_id?

StackOverflow https://stackoverflow.com/questions/3912534

  •  29-09-2019
  •  | 
  •  

Question

Je fais un moteur de blog dans Symfony. Voici une partie de mon schéma:

text alt

Content:
  connection: doctrine
  tableName: ec_content
  columns:
    id:
      type: integer(4)
      fixed: false
      unsigned: true
      primary: true
      autoincrement: true
(...)
  relations:
    Author:
      local: author_id
      foreign: id
      type: one
    State:
      local: state_id
      foreign: id
      type: one
    Type:
      local: type_id
      foreign: id
      type: one
(...)

Dans les pages d'administration, je veux afficher le type des articles, mais symfony ne montre que les type_id, pourquoi est-ce?

EDIT: voici mon generator.yml. Je ne l'ai pas modifié beaucoup encore

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

    config:
      actions: ~
      fields:  ~
      list:
        title: Brouillons
        display: [Type, State, title, link]
      filter:  ~
      form:    ~
      edit:    ~
      new:     ~
Était-ce utile?

La solution

OK.

Dans votre generator.yml, sur la ligne de display, Symfony (via Doctrine) recherchera un nom de champ dans votre classe de modèle qui correspond à chaque champ que vous souhaitez afficher. Si le nom du champ ne puis existait pas, il cherchera une méthode de getFieldName() correspondante et appeler.

Dans votre exemple, vous avez Type comme un nom de domaine, qui appelleront getType() -. Cela va chercher la relation dans Par défaut, la doctrine suppose que lorsque vous voulez convertir un modèle en une chaîne (par exemple pour l'affichage dans votre liste), vous souhaitez utiliser la clé primaire -. dans votre cas, la valeur ID

Pour remédier à cela, ajoutez une méthode de __toString() comme suit, à votre fichier lib/model/doctrine/EcType.class.php Doctrine:

class EcType extends BaseEcType
{
  public function __toString()
  {
    return $this->type;
  }
}

et vous devriez voir le champ « type » affiché dans votre liste générée admin.

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