2
モデルが生成された後、列に検証規則を追加する方法を教えてください。 propelの検証を拡張することができますが、スキーマからこれらのモデルを生成した後、これらの検証ルールをモデルの列に適用するオプションが表示されませんでした。モデルを生成した後、Propelモデルに検証ルールを追加する方法は?
実際のスキーマにこれらのルールを追加することがわかりましたが、私はそうしたくありません。
モデルが生成された後、列に検証規則を追加する方法を教えてください。 propelの検証を拡張することができますが、スキーマからこれらのモデルを生成した後、これらの検証ルールをモデルの列に適用するオプションが表示されませんでした。モデルを生成した後、Propelモデルに検証ルールを追加する方法は?
実際のスキーマにこれらのルールを追加することがわかりましたが、私はそうしたくありません。
のいずれかの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();を実行できます。アプリケーションの任意の場所で戻り値をチェックします。
これがあなたの質問に答えることを願っています。
返信いただきありがとうございます。私はそれを自分でハックしようとします。私はドキュメントで何か見落としているかどうかを見てwnted – dead