0

ORMモデルのルール関数を根こそぎにすることなく、特定のormの検証をスキップするにはどうすればよいですか?

コハナ3.3を使用しています

4

2 に答える 2

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() == TRUErules()check()

于 2012-12-14T21:41:16.567 に答える
0

受け入れられた回答では、 getter のような $this->validation_required() 関数の使用は間違っているようです ($required パラメータのデフォルト値は != NULL です)

public function validation_required($required = TRUE)
{
    if ($required === NULL)
    {
       // work as getter
       return $this->_validation_required;
    }
...
于 2014-08-20T10:28:44.517 に答える