Symfony 1.4: Lehre i18n Generator Fragen
-
30-09-2019 - |
Frage
Ich habe ein seltsames Problem mit meinem i18n Lehre Schema und u.a. der Admin-Generator.
(Bitte schauen Sie auf das Bearbeitungsteil unten zuerst)
Das Schema sieht aus wie:
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 }
Das erste Problem, das ich mit sfForms habe:
new sfWidgetFormDoctrineChoice(array('model' => 'CargoSize', 'expanded' => true, 'multiple' => false), array('style' => 'list-style-type: none; display: inline;'))
Dies erzeugt einen Radio Butten Satz mit der richtigen IDs, aber leeren Namen Wert. Auch wenn ich versuche, den Namen Wert zu erhalten, indem direkt ein CargoSize Objekts von ID und LANG, getName () immer einen leeren String zurück Auswahl (die DB korrekt mit geeigneten Daten gefüllt ist).
So ist somethng worng mit der Schema-Definition ??
Das zweite Problem scheint mit dem Admin-Generator:
php symfony doc:generate-admin --module=cargo_size admin CargoSize
Die generator.yml sieht aus wie:
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: ~
Das Komische ist, dass die Listenansicht zeigt mir den i18n Namen. Aber in der Bearbeitungsansicht ich immer die Fehler "Widget 'name' existiert nicht" .
Do haben euch eine Ahnung, warum dies geschieht? Ich würde für Ihre Hilfe sehr dankbar sein.
BEARBEITEN:
Ich denke, das Problem liegt tiefer, weil dieser einfache Frieden Code nicht beachten Arbeit:
Zuerst werden die Datensätze für die Beispiele:
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
hat Does jemand eine Idee? Ich bin wirklich deperated: (
Lösung 2
fand ich den Fehler. Aus irgendeinem Grund wurde die Kultur auf „ de_DE “ statt nur „de“. Damit die i18n Verhalten Sachen Einstellung hat nicht funktioniert!
Andere Tipps
Erstes Problem:
Der „Namen Wert“ angezeigt werden, aus dem __toString () -Methode Ergebnis genommen. Sie könnten die „Methode“ Optionen hinzufügen, wie folgt aus:
new sfWidgetFormDoctrineChoice(array('model' => 'CargoSize', 'expanded' => true, 'multiple' => false, 'method' => 'getName'), array('style' => 'list-style-type: none; display: inline;'))
Zweites Problem:
Das Formular muss betten die i18n Form. Um dies zu tun, setzen Sie diese in der configure-Methode:
$this->embedI18n($cultures);
Dabei steht $ Kulturen ist ein Array Ihrer Kulturen Codes.