Generador de Administración: ¿por qué no puedo visualizar el estado de un artículo, en lugar de state_id?

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

  •  29-09-2019
  •  | 
  •  

Pregunta

Estoy haciendo un blog de motor en Symfony. Aquí está parte de mi esquema:

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
(...)

En las páginas de administración, quiero mostrar el tipo de los artículos, pero Symfony sólo muestra la TYPE_ID, ¿por qué?

Edit: aquí está mi generator.yml:. No he modificado mucho todavía

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:     ~
¿Fue útil?

Solución

Aceptar.

En su generator.yml, en la línea display, Symfony (a través de Doctrina) buscará un nombre de campo en la clase del modelo que corresponde a cada campo que desea visualizar. Si el nombre del campo no existe, será luego buscar un método getFieldName() correspondiente y llamar a eso.

En el ejemplo, tiene Type como un nombre de campo, que va a llamar a getType() -. Que esto obtendrá la relación, en forma predeterminada, Doctrina asume que cuando se desea convertir un modelo para una cadena (por ejemplo, para la exhibición en su lista), desea utilizar la clave principal -. en su caso, el valor de ID

Para superar esto, agregar un método __toString() de la siguiente manera, a su archivo lib/model/doctrine/EcType.class.php Doctrina:

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

y debería ver el campo 'tipo' que se muestra en la lista generada administrador.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top