首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何覆盖由Phalcon-devtools生成的模型的非空项错误消息?

如何覆盖由Phalcon-devtools生成的模型的非空项错误消息?
EN

Stack Overflow用户
提问于 2017-11-29 21:36:19
回答 1查看 656关注 0票数 0

问题

PresenceOf的验证规则是为Phalcon-devtools生成的模型的表定义中设置了非空约束的项自动设置的,但是在错误发生时,当消息“名称是必需的”时,它将自动完成。

您不必更改PresenceOf的验证规则,但请教我如何覆盖此错误消息。

概述

  • 使用Phalcon-devtools使用以下命令生成模型。 phalcon模型用户
  • 即使您没有专门设置验证规则,如果您保存它而没有将它输入到Null的输入项name,则会发生错误,并且您可以获得消息"name是必需的“。
  • 要使错误消息成为您自己的字符串,请将以下内容添加到用户模型中。 $validator =新的验证( );$验证器->添加( 'name',新的PresenceOf( 'message‘=> "required",);
  • 获取"required“作为错误消息是一种假设,但结果不会改变,并得到"name is required”。

源代码

代码语言:javascript
复制
<?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);
    }

}

环境

  • CentOS 7.4(x64)
  • Apache 2.4.6
  • PHP 7.0.26
  • Phalcon框架3.2.4
  • MySQL Ver 14.14下段5.6.38
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-12-01 03:25:18

您可以尝试将默认值直接设置到模型变量中。

代码语言:javascript
复制
 /**
 *
 * @var string
 * @Column(type="string", length=767, nullable=false)
 */
public $name = '';

您可以做的另一件事是直接从数据库中设置默认值,并将“默认”RawValue作为值传递。

代码语言:javascript
复制
protected function beforeValidationOnCreate() {
    if (empty($this->name)) {
        $this->name = new \Phalcon\Db\RawValue('default');
    }
}

最后,可以禁用默认的phalcon验证。

代码语言:javascript
复制
 public function initialize() {
    $this->setup(array('notNullValidations' => false));
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47562229

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档