Generador de Administración: ¿por qué no puedo visualizar el estado de un artículo, en lugar de state_id?
-
29-09-2019 - |
Pregunta
Estoy haciendo un blog de motor en Symfony. Aquí está parte de mi esquema:
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: ~
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.