نماذج نموذج Symfony 2 داخل النماذج الأولية - حقل اسم $$ مزدوج

StackOverflow https://stackoverflow.com/questions/9428437

سؤال

أحتاج إلى بعض المساعدة في النماذج الأولية الموجودة ضمن النماذج الأولية.يعد Symfony ذكيًا جدًا في إنشاء النماذج الأولية، ولكن بمجرد الانتهاء من طبقة واحدة (على سبيل المثال، يمكنك إنشاء نماذج أولية).النماذج الأولية داخل النماذج الأولية)، فإنه يعيد استخدام $$name$$ لكلا النموذجين.

هذا ما يبدو عليه حقل النموذج الأولي للكيان الخاص بي.يقوم JQuery بتبديل $$name$$ بقيمة الفهرس الصحيحة (استنادًا إلى عدد العقد الفرعية)

 <input type="text" id="entry_entities_$$name$$_contactFax" name="entry[entities][$$name$$][contactFax]" value="" />

حتى الان جيدة جدا.ولكن عندما تتعمق في مستوى واحد، يستخدم Symfony $$name$$ للمستوى التالي أيضًا - إليك نموذج أولي لخاصية الكيان:

<div id="entry_entities_123_properties" data-prototype="    
    &lt;label for=&quot;entry_entities_$$name$$_properties_$$name$$_name&quot;&gt;Name&lt;/label&gt;
    &lt;input type=&quot;text&quot; id=&quot;entry_entities_$$name$$_properties_$$name$$_name&quot; name=&quot;entry[entities][$$name$$][properties][$$name$$][name]&quot; value=&quot;&quot; /&gt;

وهذا يعني أنه (في هذا المثال مع معرف الكيان 123) أن جميع الخصائص تحصل على المعرف 123:

name="entry[entities][123][properties][123][name]"
name="entry[entities][123][properties][123][name]"
name="entry[entities][123][properties][123][name]"

إلخ.

في رأيي، فإن أفضل طريقة لحل المشكلة هي استخدام $$somethingelse$$ للخاصية - هل يعرف أحد مكان تعيين ذلك - أو هل لدى أي شخص مثال كامل باستخدام JS حول كيفية حل هذه المشكلة؟لقد شرعت في عملية بحث/استبدال فظيعة للاسم الثاني $$name$$ في كل سطر، لكن الأمر أصبح فوضويًا للغاية.أنا متأكد من أن هناك طريقة سهلة للقيام بذلك، لكن لم أتمكن من العثور على أي أدلة على الإنترنت.

هل كانت مفيدة؟

المحلول

هذا الرمز هو ل Symfony 2.0 (في 2.1+، يمكنك فقط تمرير الاسم إلى وظيفة GransoDicetagcode):

يمكنك إنشاء نوع المجموعة الخاصة بك مع الخيار المطلوب: giveacodicetagpre.

ثم حدد خدمة مع: giveacodicetagpre.

واستخدمها كمجموعة Symfony ولكن مع المعلمة prototype_name.

نصائح أخرى

أنا لست على دراية بـ Symfony، لكني أستخدمه String.replace() في Javascript يستبدل التكرار الأول فقط بشكل افتراضي، لذلك يمكنك استخدام ذلك بأمان تام.

$('mydiv').html
(
    $('mydiv').html().replace('$$name$$', 123).replace('$$name$$', 456);
);

إذا تم تقسيم الأشياء إلى خطوط مختلفة، وتريد استبدالها في تلك الخطوط، فيمكنك استخدامها .split() لتقسيمها إلى مصفوفة، for() فوقها إذن .join() مرة أخرى معا.

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