模型生成后如何为Propel模型添加验证规则?

问题描述 投票:0回答:1

生成模型后如何将验证规则添加到我的列中。 我知道您可以扩展 propel 的验证,但在从架构生成这些模型后,我没有看到将这些验证规则应用到模型列的选项。

为了澄清,我知道您在实际架构中添加了这些规则,但我宁愿不这样做。

php validation propel
1个回答
0
投票

在任何 propel 生成的主类(例如 User)中,您可以重写 doValidate($column=null) 方法。请参阅下面的示例...返回逻辑部分可能需要改进。

public function doValidate($columns = null){
    $parentErrors = parent::doValidate($columns);
    $validationErrors = array();
    if(mb_strlen($this->getFirstName()) == 0){
        $message = '...';
        $vf = new ValidationFailed(UserPeer::FIRST_NAME, $message);
        $validationErrors[] = $vf;
    }



    if(is_array($parentErrors)){
        if(!empty($validationErrors)){
            $validationErrors = array_merge($parentErrors, $validationErrors);
        }else{
            $validationErrors = $parentErrors;
        }
        return $validationErrors;
    }elseif($parentErrors === true){
        if(empty($validationErrors)){
            return true;
        }else{
            return $validationErrors;
        }
    }else{
        throw UnexpectedValueException('Unexpected validation state.');
    }
}

之后你可以运行 $validationErrors = $user->validate();应用程序中的任何位置并检查返回值。

我希望这能回答您的问题。

© www.soinside.com 2019 - 2024. All rights reserved.