طراز CakePhP-> حفظ (): احفظ كل ما عدا بعض الحقول المستبعدة
-
27-09-2019 - |
سؤال
أريد حفظ كل ما عدا بعض الحقول المستبعدة. أعلم أنه يمكنني فعل ذلك بهذه الطريقة
$this->Blah->save($this->data,false,$fieldList)
حيث تحتوي قائمة Fieldlist $ على جميع حقول البيانات في الجدول ، لكن هذه لا أريد حفظها. لديّ بعض الجداول التي تحتوي على حقول بيانات Maaany ، ولا أريد أن أكتب القائمة بأكملها من نقطة الصفر في كل إجراء وحدة تحكم (نعم ، الحقول التي لا ينبغي حفظها تختلف من العمل إلى العمل). بالإضافة إلى ذلك ، يبدو فوضويًا ومربكًا. هل يوفر CakePhP شيئًا جاهزًا للاستخدام لهذه الحالة؟ إذا لم يكن الأمر كذلك ، فأعتقد ، يجب أن أقوم بتنفيذه بنفسي عن طريق إضافة خاصية قائمة الميدان $ إلى كل وحدة تحكم والقيام بشيء من هذا القبيل (حل قبيح):
$tmp = $fieldList;
unset(array_search('fieldtoexclude', $tmp));
$this->Blah->save($this->data,false,$tmp);
تحياتي الحارة
المحلول
function blacklist($blackList = array()) {
return array_diff(array_keys($this->schema()), $blackList);
}
عمل شود
ألق نظرة على:http://www.dereuromark.de/2010/09/21/saving-model-data-and-security/للتفاصيل
نصائح أخرى
إذا تغيرت قائمة الحقل من إجراء إلى عمل ، فأنت تبحث عن وظيفة تلقائية يمكنها قراءة عقلك. الكعكة لا توفر ذلك!
في مكان ما ، عليك أن تقول الحقول التي سيتم استبعادها والقيام بذلك الطويل بطريقة واضحة سيجعل رمزك أكثر قابلية للصيانة.
إذا كانت وحدة تحكم واحدة فقط ، فحدد القائمة كمتغير فئة ، أو فئة فرعية بدلاً من ذلك ، Save Action على النموذج.