سؤال

لدي مشكلة غريبة في مخطط عقيدة 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);

حيث الثقافات $ هي مجموعة من رموز الثقافات الخاصة بك.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top