生成模型后,如何将验证规则添加到我的列中。我知道你可以扩展 propel 的验证,但是在我从模式生成这些模型之后,我没有看到将这些验证规则应用于我的模型列的选项。
为了澄清,我知道您在实际架构中添加了这些规则,但我不想这样做。
生成模型后,如何将验证规则添加到我的列中。我知道你可以扩展 propel 的验证,但是在我从模式生成这些模型之后,我没有看到将这些验证规则应用于我的模型列的选项。
为了澄清,我知道您在实际架构中添加了这些规则,但我不想这样做。
在任何推进生成的主类(例如用户)中,您可以覆盖 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(); 应用程序中的任何位置并检查返回值。
我希望这回答了你的问题。