Symfony 1.4: Doctrina temas generadores i18n
-
30-09-2019 - |
Pregunta
Tengo un extraño problema con mi i18n esquema de la doctrina y la inter alia, el generador de administración.
(Por favor, mire la parte inferior a la primera edición)
Las miradas de esquema como:
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 }
El primer problema que tengo con sfForms:
new sfWidgetFormDoctrineChoice(array('model' => 'CargoSize', 'expanded' => true, 'multiple' => false), array('style' => 'list-style-type: none; display: inline;'))
Esto genera un conjunto de radio butten con los ID correctos, pero los valores de nombre vacío. Incluso cuando trato de obtener el valor de nombre seleccionando directamente un objeto CargoSize por ID y LANG, getName () siempre devuelve una cadena vacía (la base de datos se llena correctamente con los datos apropiados).
Así es worng somethng con la definición del esquema ??
El segundo problema aparece con el admin-generador:
php symfony doc:generate-admin --module=cargo_size admin CargoSize
Las miradas generator.yml como:
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: ~
Lo curioso es que la vista de lista me muestra el nombre i18n. Sin embargo, en vista de edición que siempre sale el error " 'nombre' Reproductor no existe" .
¿Ustedes tienen alguna idea de por qué sucede esto? Estaría muy agradecido por su ayuda.
EDIT:
Creo que el problema se encuentra más profundo, porque este simple código de la paz funciona nota:
En primer lugar los conjuntos de datos para los ejemplos:
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
¿Alguien tiene alguna idea? Estoy muy deperated: (
Solución 2
He encontrado el error. Por alguna razón, el cultivo se establece en " es_ES " en lugar de simplemente "de". Con este ajuste, las cosas comportamiento i18n no funcionaba!
Otros consejos
Primer problema:
Los "valores nombres" mostradas se toman a partir del resultado método __toString (). Se podría añadir las opciones de "método", de esta manera:
new sfWidgetFormDoctrineChoice(array('model' => 'CargoSize', 'expanded' => true, 'multiple' => false, 'method' => 'getName'), array('style' => 'list-style-type: none; display: inline;'))
Segundo problema:
Su forma debe incrustar la forma i18n. Para ello, poner esto en el método configure:
$this->embedI18n($cultures);
donde $ culturas es una matriz de los códigos de culturas.