Symfony 1.4: قضايا مولد العقيدة I18N
-
30-09-2019 - |
سؤال
لدي مشكلة غريبة في مخطط عقيدة I18N الخاص بي و IA مولد المشرف.
(يرجى إلقاء نظرة على الجزء التحرير أدناه أولاً)
يشبه المخطط:
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 }
المشكلة الأولى التي أواجهها مع sfforms:
new sfWidgetFormDoctrineChoice(array('model' => 'CargoSize', 'expanded' => true, 'multiple' => false), array('style' => 'list-style-type: none; display: inline;'))
هذا ينشئ مجموعة من الراديو مع المعرفات الصحيحة ، ولكن قيم الاسم الفارغة. حتى عندما أحاول الحصول على قيمة الاسم عن طريق تحديد كائن Cargosize مباشرة عن طريق ID و Lang ، فإن GetName () يعيد دائمًا سلسلة فارغة (يتم ملء DB بشكل صحيح مع البيانات المناسبة).
فهل يرتديها شيء ما مع تعريف المخطط ؟؟
تظهر المشكلة الثانية مع مولد المسؤول:
php symfony doc:generate-admin --module=cargo_size admin CargoSize
المولد. iml يشبه:
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: ~
الشيء المضحك هو أن عرض القائمة يوضح لي اسم i18n. لكن في عرض التحرير ، أحصل دائمًا على الخطأ "اسم المصغرة" غير موجود ".
هل لديك أي فكرة عن سبب حدوث هذا؟ سأكون ممتنًا جدًا لمساعدتكم.
تعديل:
أعتقد أن المشكلة تقع بشكل أعمق ، لأن سلام الرمز البسيط هذا يلاحظ العمل:
أولا مجموعات البيانات للأمثلة:
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
هل لدى شخص ما أي فكرة؟ أنا حقًا منتهك :(
المحلول 2
لقد وجدت الخطأ. لسبب ما تم تعيين الثقافة على "de_de"بدلاً من مجرد" DE ". مع هذا الإعداد ، لم تنجح الأشياء السلوكية I18N!
نصائح أخرى
المشكلة الأولى:
يتم أخذ "قيم الأسماء" المعروضة من نتيجة طريقة __toString (). يمكنك إضافة خيارات "الطريقة" ، مثل هذا:
new sfWidgetFormDoctrineChoice(array('model' => 'CargoSize', 'expanded' => true, 'multiple' => false, 'method' => 'getName'), array('style' => 'list-style-type: none; display: inline;'))
المشكلة الثانية:
يجب تضمين نموذج I18N. للقيام بذلك ، ضع هذا في طريقة التكوين:
$this->embedI18n($cultures);
حيث الثقافات $ هي مجموعة من رموز الثقافات الخاصة بك.