طراز CakePhP-> حفظ (): احفظ كل ما عدا بعض الحقول المستبعدة

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

  •  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 على النموذج.

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