Разные правила для одной модели AR в Yii

У меня есть одна модель, расширяющая класс AR с определенными правилами. Но теперь мне нужно вставить строку в эту таблицу, но с другими правилами. Мне нужно создать другую модель с новыми правилами, или можно определить другие правила?

3 ответа

Вы можете установить сценарий проверки. Например:

$model = new Post(); 
$model->scenario = 'new_line';
$model->attributes = $_GET['data'];
if ($model->validate()){
    $model->save(false);
}

в вашей модели:

public function rules()
{
    return array(
        array('username, text', 'required','on' => 'new_line')
    );
}

В правилах модели все строки массива должны иметь ключ "on", иначе эти правила не будут применяться.

Узнайте больше здесь.

Если вы расширяете свой класс (активные записи), то вы можете просто переопределить свою функцию rules(), то есть:

class User extends ActiveRecord(){
    function rules(){
        return array(array(
            // Nomrally a rule
        ))
    }
}

А потом сделайте следующий урок:

class User_extended extends ActiveRecord(){
    function rules(){
        return array(array(
            // Nomrally a rule
        ))
    }
}

И это должно быть так. Вы можете позвонить User_extended класс и ваши правила будут применяться к родителю User класс, так как Yii захватывает правила в $this контекст и $this будет вашим детским классом.

Но вы также можете использовать сценарии здесь, но это может испортиться, особенно если вам нужно переопределить другие методы.

Спасибо. Теперь я пытаюсь использовать это

/**
 * @param string $attribute fields names wich should be validated
 * @param array $params additional params for validation
 */
public function ValidatorName($attribute,$params) { … }
Другие вопросы по тегам