对于由Phalcon-devtools生成的模型的表定义上设置了Not Null约束的项目,自动设置PresenceOf
的验证规则,但同时消息为&#34; < strong> 名称是必需的 &#34;在PresenceOf错误时它将自动完成。
您不必更改PresenceOf
的验证规则,但请教我如何覆盖此错误消息。
使用以下命令使用Phalcon-devtools生成模型。
phalcon model user
即使您没有专门设置验证规则,如果您保存它而不输入Not Null的输入项name
,则会发生错误并且您可以获取消息&#34; 名称是必需的 &#34;。
要使错误消息成为您自己的字符串,请将以下内容添加到用户模型中。
$validator = new Validation();
$validator->add(
'name',
new PresenceOf([
'message' => "required",
])
);
这是假设获得&#34; 必需 &#34;作为错误消息,但结果不会改变,并且需要 名称 &#34;。
<?php
use Phalcon\Mvc\Controller;
use Phalcon\Validation;
use Phalcon\Validation\Validator\PresenceOf;
class User extends ModelBase
{
/**
*
* @var string
* @Column(type="string", length=767, nullable=false)
*/
public $name;
public function validation()
{
$validator = new Validation();
$validator->add(
'name',
new PresenceOf([
'message' => "required",
])
);
return $this->validate($validator);
}
/**
* Initialize method for model.
*/
public function initialize()
{
$this->setSchema("lashca");
$this->setSource("user");
}
/**
* Returns table name mapped in the model.
*
* @return string
*/
public function getSource()
{
return 'user';
}
/**
* Allows to query a set of records that match the specified conditions
*
* @param mixed $parameters
* @return User[]|User|\Phalcon\Mvc\Model\ResultSetInterface
*/
public static function find($parameters = null)
{
return parent::find($parameters);
}
/**
* Allows to query the first record that match the specified conditions
*
* @param mixed $parameters
* @return User|\Phalcon\Mvc\Model\ResultInterface
*/
public static function findFirst($parameters = null)
{
return parent::findFirst($parameters);
}
}
答案 0 :(得分:0)
您可以尝试将默认值直接设置到模型变量
中 /**
*
* @var string
* @Column(type="string", length=767, nullable=false)
*/
public $name = '';
您可以做的另一件事是直接从数据库设置默认值并将'default'RawValue作为值传递
protected function beforeValidationOnCreate() {
if (empty($this->name)) {
$this->name = new \Phalcon\Db\RawValue('default');
}
}
最后,您可以禁用默认的phalcon验证
public function initialize() {
$this->setup(array('notNullValidations' => false));
}