Phalcon Validation 動作確認メモ

Phalcon\Validation クラスについての動作確認を書く.

何も add しない

$data = array();
$validation = new Phalcon\Validation();    # Validation に何も追加してないと
$messages = $validatoin->validate($data);  # Phalcon\Validation\Exception('There are no validators to validate') が飛んてくる

PresenceOf を一つ追加した場合のエラー出力

use Phalcon\Validation;
use Phalcon\Validation\Validator\PresenceOf;

$data = array();
$validation = new Validation();
$validation->add('name', new PresenceOf())
$messages = $validation->validate($data);
var_dump($messages);
var_dump(count($messages) > 0);

出力

object(Phalcon\Validation\Message\Group)#56 (2) {
  ["_position":protected]=>
  NULL
  ["_messages":protected]=>
  array(1) {
    [0]=>
    object(Phalcon\Validation\Message)#57 (4) {
      ["_type":protected]=>
      string(10) "PresenceOf"
      ["_message":protected]=>
      string(27) "名前は必須項目です"
      ["_field":protected]=>
      string(4) "name"
      ["_code":protected]=>
      int(0)
    }
  }
}
bool(true)

PresenceOf を一つ追加した場合の出力

use Phalcon\Validation;
use Phalcon\Validation\Validator\PresenceOf;

$data = array();
$validation = new Validation();
$validation->add('name', new PresenceOf())
$messages = $validation->validate($data);
var_dump($messages);
var_dump(count($messages) > 0);

出力

object(Phalcon\Validation\Message\Group)#56 (2) {
  ["_position":protected]=>
  NULL
  ["_messages":protected]=>
  NULL
}
bool(false)

filter を使った場合

use Phalcon\Validation;
use Phalcon\Validation\Validator\PresenceOf;

$data = array();
$validation = new Validation();
$validation->add('name', new PresenceOf())
$messages = $validation->validate($data);
var_dump($messages);
var_dump(count($messages) > 0);

ドキュメント には下記のように array も許容してるように見えるけど,多分してない.

f:id:nise_nabe:20140701123359p:plain

期待結果としては複数の attribute に対して同じフィルタを設定できるように見えるけど動作確認すると何もしない.(確かにエラーにはならないけど)

下記のように 2.0 の記述だと string しか想定してないしたぶんドキュメントのバグっぽい.なんで array 入ってるんだ?

f:id:nise_nabe:20140701123404p:plain