ORMモデルのルール関数を根こそぎにすることなく、特定のormの検証をスキップするにはどうすればよいですか?
コハナ3.3を使用しています
rules()
メソッドを参照してください。次のようなカスタム チェックを簡単に追加できます。
// required by default
protected $_validation_required = TRUE;
public function rules()
{
if ($this->validation_required())
{
// return all model rules
return array(
// default rules here
);
// or
// if extending model with existing rules
return parent::rules();
}
else
{
// skip validation
return array();
}
}
public function validation_required($required = TRUE)
{
if ($required === NULL)
{
// work as getter
return $this->_validation_required;
}
// set value
$this->_validation_required = (bool)$required;
return $this;
}
もちろん、さまざまなイベント (挿入/更新など) のカスタム ルールを使用してこのコードを拡張できます。
PS。また、メソッドをオーバーライドしてwhencheck()
を返すこともできます。ただし、代わりに空のルールを送信することをお勧めします (これはカスタマイズ用に特別に設計されたものであり、whileはシステム メソッドです)。TRUE
$this->validation_required() == TRUE
rules()
check()
受け入れられた回答では、 getter のような $this->validation_required() 関数の使用は間違っているようです ($required パラメータのデフォルト値は != NULL です)
public function validation_required($required = TRUE)
{
if ($required === NULL)
{
// work as getter
return $this->_validation_required;
}
...