سؤال

لدي شكلان symfony:

ShoppingListForm
ShoppingListItemForm

أقوم بتضمين FraskingListItemform داخل قائمة التسوق عدة مرات. IE قائمة التسوق تحتوي على العديد من العناصر.

لذلك يتكون ShoppistIteMform من اثنين من المصغّرة:

item_id (checkbox) 
shopping_list_id (hidden - foreign key)

ما أود القيام به هو حذف كائن التسوق المقابل في حالة وجود الكائن وترك خانة الاختيار بدون فحص.

لست متأكدًا من كيفية حدوث هذا الحذف؟ هل يمكنني استخدام مدقق منشور لمعرفة الحقول التي لم يتم فحصها/لم يتم فحصها؟ أنا ضائع بعض الشيء على هذا واحد.

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

المحلول

سأقوم بذلك عن طريق الإفراط في ركوب طريقة التحديث في قائمة التسوق ووضع المكالمات المخصصة لـ DELETE () وما إلى ذلك (تأكد من استدعاء Parent :: UpdateObject () داخلها).

اعتمادًا على كيفية تنفيذه ، قد تحتاج أيضًا إلى إزالة النماذج المدمجة وقيمها لضمان الاستمرار في الادخار بشكل صحيح للكائنات المتبقية. حاول بدون ، ولكن إذا قمت بذلك ، فأنت بحاجة إلى مسح ما يلي:

unset($taintedValues['ShoppingListItem'][$key]);
unset($this->embeddedForms['ShoppingListItem'][$key]);
unset($this->validatorSchema['ShoppingListItem'][$key]);
unset($taintedFiles['ShoppingListItem'][$key]);

إذا كنت ترغب في رؤية طريقة updateObject مخصصة للحصول على فكرة عن كيفية التفاعل مع القيم وما إلى ذلك:

http://www.symfony-project.org/forms/1_2/en/11-doctrine-integration#chapter_11_sub_customizing_the_updateobject_method

نصائح أخرى

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

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