KO 2.3.4 - الوصول إلى صفيف التحقق من صحة من عمليات الاسترجاعات في النماذج
-
02-10-2019 - |
سؤال
الاعتذار إذا كان هذا هو الإشراف أو الغباء المطلق من جانبي ، لكن لا يمكنني معرفة كيفية الوصول إلى مجموعة التحقق من الصحة من رد الاتصال في نموذج (باستخدام ORM و KO 2.3.4). أريد أن أكون قادرًا على إضافة رسائل خطأ محددة إلى صفيف التحقق من الصحة إذا كان رد الاتصال يعيد خطأ.
على سبيل المثال طريقة التسجيل هذه:
public function register(array & $array, $save = FALSE)
{
// Initialise the validation library and setup some rules
$array = Validation::factory($array)
->pre_filter('trim')
->add_rules('email', 'required', 'valid::email', array($this, 'email_available'))
->add_rules('confirm_email', 'matches[email]')
->add_rules('password', 'required', 'length[5,42]')
->add_rules('confirm_password', 'matches[password]');
return ORM::validate($array, $save);
}
أتصل مرة أخرى:
public function email_available($value)
{
return ! (bool) $this->db
->where('email', $value)
->count_records($this->table_name);
}
من الواضح أنني أستطيع الوصول إلى النموذج الحالي من رد الاتصال ، لكنني كنت أتساءل ما هي أفضل طريقة لإضافة خطأ مخصص من رد الاتصال؟
المحلول
"ردك" ليس ردًا ، ولكنه قاعدة. ما تريده هو:
$array->add_callback('email', array($this, 'email_available'));
ثم سيبدو رد الاتصال الخاص بك هكذا:
public function email_available(Validation $array, $input)
{
if ($value = $array[$input])
{
$result = (bool) $this->db
->where('email', $value)
->count_records($this->table_name);
if ( ! $result)
{
$array->add_error($input, 'Email address is not available');
}
}
}
لا تنتمي إلى StackOverflow