1. 程式人生 > >Phalcon之資料驗證(Validation)

Phalcon之資料驗證(Validation)

驗證資訊(Validation Messages)

Phalcon\Validation 內建了一個訊息子系統,這提供了一個非常好的驗證訊息回傳機制,以便在驗證結束後取得驗證資訊,比如失敗原因等。

每個訊息由一個 Phalcon\Validation\Message 類的例項構成。 驗證過程產生的訊息可以使用getMessages()方法取得。 每條訊息都有一些擴充套件的資訊組成比如產生錯誤的屬性或訊息的型別等:

<?php

$messages = $validation->validate();
if (count($messages)) {
    foreach (
$validation->getMessages() as $message) { echo "Message: ", $message->getMessage(), "\n"; echo "Field: ", $message->getField(), "\n"; echo "Type: ", $message->getType(), "\n"; } }

當然這裡我們也可以對getMessages()方法進行重寫, 以取得我們想要的資訊:

<?php

class MyValidation extends
Phalcon\Validation { public function initialize() { // ... } public function getMessages() { $messages = array(); foreach (parent::getMessages() as $message) { switch ($message->getType()) { case 'PresenceOf': $messages
[] = 'The field ' . $message->getField() . ' is mandatory'; break; } } return $messages; } }

或我們也可以傳送一個message引數以覆蓋驗證器中預設的資訊:

<?php

use Phalcon\Validation\Validator\Email;

$validation->add('email', new Email(array(
    'message' => 'The e-mail is not valid'
)));

預設,getMessages()方法會返回在驗證過程中所產生的資訊。 我們可以使用filter()方法來過濾我們感興趣的訊息:

<?php

$messages = $validation->validate();
if (count($messages)) {
    //Filter only the messages generated for the field 'name'
    foreach ($validation->getMessages()->filter('name') as $message) {
        echo $message;
    }
}