Validation 如何在模型生成后添加验证规则以推进模型?

Validation 如何在模型生成后添加验证规则以推进模型?,validation,propel,Validation,Propel,生成模型后,我如何向列中添加验证规则。 我知道您可以扩展spreep的验证,但在我从模式生成这些模型之后,我没有看到将这些验证规则应用于模型列的选项 为了澄清,我知道您在实际模式中添加了这些规则,但我不希望这样做。在任何生成的主类(例如User)中,您都可以重写doValidate($column=null)方法。请参见下面的示例…返回逻辑部分可能需要改进 public function doValidate($columns = null){ $parentErrors = paren

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


为了澄清,我知道您在实际模式中添加了这些规则,但我不希望这样做。

在任何生成的主类(例如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();并检查返回值


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

在任何生成的主类(例如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();并检查返回值


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

谢谢你的回答,我会自己尝试解决的。我只是想看看我是否忽略了文件中的任何内容。谢谢你的回复,我会试着自己动手处理。只是想看看我是否忽略了文件中的任何内容