Phalcon 3 - Validating Models

التحقق من صحة النماذج




phalcon

التحقق من سلامة البيانات

Phalcon\Mvc\Model عدة أحداث للتحقق من صحة البيانات وتنفيذ قواعد العمل. يسمح لنا حدث "التحقق من الصحة" الخاص باستدعاء مدققين مضمنين على السجل. يعرض "فالكون" بعض أدوات التحقق المضمنة التي يمكن استخدامها في هذه المرحلة من التحقق.

يوضح المثال التالي كيفية استخدامه:

namespace Store\Toys;

use Phalcon\Mvc\Model;
use Phalcon\Validation;
use Phalcon\Validation\Validator\Uniqueness;
use Phalcon\Validation\Validator\InclusionIn;

class Robots extends Model
{
    public function validation()
    {
        $validator = new Validation();

        $validator->add(
            "type",
            new InclusionIn(
                [
                    "domain" => [
                        "Mechanical",
                        "Virtual",
                    ]
                ]
            )
        );

        $validator->add(
            "name",
            new Uniqueness(
                [
                    "message" => "The robot name must be unique",
                ]
            )
        );

        return $this->validate($validator);
    }
}

يقوم المثال أعلاه بإجراء التحقق باستخدام أداة التحقق المضمنة "InclusionIn". يتحقق من قيمة "نوع" الحقل في قائمة المجال. إذا لم يتم تضمين القيمة في الطريقة ، فستفشل أداة التحقق من الصحة وتعيد false.

لمزيد من المعلومات حول المدققين ، راجع وثائق التحقق من الصحة .

فكرة إنشاء المدققين هي جعلها قابلة لإعادة الاستخدام بين عدة موديلات. يمكن أن تكون أداة التحقق من الصحة أيضًا بسيطة مثل:

namespace Store\Toys;

use Phalcon\Mvc\Model;
use Phalcon\Mvc\Model\Message;

class Robots extends Model
{
    public function validation()
    {
        if ($this->type === "Old") {
            $message = new Message(
                "Sorry, old robots are not allowed anymore",
                "type",
                "MyType"
            );

            $this->appendMessage($message);

            return false;
        }

        return true;
    }
}

رسائل التحقق من الصحة

Phalcon\Mvc\Model على نظام فرعي للمراسلة يوفر طريقة مرنة لإخراج أو تخزين رسائل التحقق من الصلاحية التي تم إنشاؤها أثناء عمليات الإدراج / التحديث.

كل رسالة عبارة عن نسخة من Phalcon\Mvc\Model\Message ويمكن استرجاع مجموعة الرسائل التي تم getMessages() طريقة getMessages() . توفر كل رسالة معلومات موسعة مثل اسم الحقل الذي أنشأ الرسالة أو نوع الرسالة:

if ($robot->save() === false) {
    $messages = $robot->getMessages();

    foreach ($messages as $message) {
        echo "Message: ", $message->getMessage();
        echo "Field: ", $message->getField();
        echo "Type: ", $message->getType();
    }
}

Phalcon\Mvc\Model إنشاء الأنواع التالية من رسائل التحقق من الصحة:

اكتب وصف
جود يتم إنشاؤه عندما يحاول حقل له سمة غير فارغة في قاعدة البيانات إدراج / تحديث قيمة خالية
انتهاك القيد يتم إنشاؤه عندما يحاول جزء من حقل خارجي ظاهري إدخال / تحديث قيمة غير موجودة في النموذج المشار إليه
قيمة غير صالحة يتم إنشاؤه عند فشل أداة التحقق من الصحة بسبب وجود قيمة غير صالحة
InvalidCreateAttempt يتم إنتاجه عند محاولة إنشاء سجل ولكنه موجود بالفعل
InvalidUpdateAttempt يتم إنتاجه عند محاولة تحديث السجل ولكنه غير موجود

يمكن إبطال طريقة getMessages() في نموذج لاستبدال / ترجمة الرسائل الافتراضية التي يتم إنشاؤها تلقائيًا بواسطة ORM:

namespace Store\Toys;

use Phalcon\Mvc\Model;

class Robots extends Model
{
    public function getMessages()
    {
        $messages = [];

        foreach (parent::getMessages() as $message) {
            switch ($message->getType()) {
                case "InvalidCreateAttempt":
                    $messages[] = "The record cannot be created because it already exists";
                    break;

                case "InvalidUpdateAttempt":
                    $messages[] = "The record cannot be updated because it doesn't exist";
                    break;

                case "PresenceOf":
                    $messages[] = "The field " . $message->getField() . " is mandatory";
                    break;
            }
        }

        return $messages;
    }
}

فشل التحقق من صحة الأحداث

يتوفر نوع آخر من الأحداث عندما تعثر عملية التحقق من صحة البيانات على أي عدم تناسق:

عملية اسم تفسير
إدراج أو تحديث يتم حفظ يتم تشغيله عند فشل عملية INSERT أو UPDATE لأي سبب
إدراج أو حذف أو تحديث onValidationFails أثار عند فشل أي عملية معالجة البيانات