おっしゃる通り、実装に getMessages() メソッドがありませんでした。今のところ、C クラスに正式に追加されている間、モデルに追加できます。
<?php
class Users extends Phalcon\Mvc\Collection
{
public function getMessages()
{
return $this->_errorMessages;
}
}
1- 検証の結果であるエラー メッセージを表示するにはどうすればよいですか? 上記をチェック
2- カスタムバリデータを作成するにはどうすればよいですか?
バリデーターは、「Phalcon\Mvc\Model\Validator」から継承し、「Phalcon\Mvc\Model\ValidatorInterface」を実装するクラスです。
<?php
use Phalcon\Mvc\Model\Validator,
Phalcon\Mvc\Model\ValidatorInterface;
class HashValidator extends Validator implements ValidatorInterface
{
public function validate($record)
{
$fieldName = $this->getOption('field');
if (!preg_match('/[a-z]+/', $fieldName) {
$this->appendMessage("The hash is not valid", $fieldName, "Hash");
return false;
}
return true;
}
}
バリデーターを再利用したくない場合は、モデルに検証ルールを追加するだけです。
<?php
use Phalcon\Mvc\Model\Message;
class Users extends Phalcon\Mvc\Collection
{
public function validation()
{
if (!preg_match('/[a-z]+/', $this->password) {
$this->_errorMessages[] = new Message("The hash is not valid", "password", "Hash");
return false;
}
return true;
}
public function getMessages()
{
return $this->_errorMessages;
}
}
3- Phalcon\Mvc\Model\Validator\Uniqueness バリデータは NOSQL と互換性がありますか? このバリデーターは SQL モデルとのみ互換性がありますが、次の方法で NoSQL コレクションを操作するバリデーターを作成できます。
<?php
use Phalcon\Mvc\Model\Validator,
Phalcon\Mvc\Model\ValidatorInterface;
class UniqueValidator extends Validator implements ValidatorInterface
{
public function validate($record)
{
$field = $this->getOption('field');
if ($record->count(array("field" => $record->readAttribute($field)))) {
$this->appendMessage("The ".$field." must be unique", $fieldName, "Unique");
return false;
}
return true;
}
}