Доопрацювання моделі Comment

У моделі Comment нам необхідно виправити методи rules() та attributeLabels(). Метод attributeLabels() повертає масив заголовків для зазначених полів. Метод relations() виправляти не будемо, так як код, що згенерував Gii, нам підходить.

Зміна методу rules() #

Почнемо із уточнення правил валідації, згенерованих за допомогою Gii. Для коментарів будемо використовувати наступні правила:

public function rules()
{
    return array(
        array(
'content, author, email''required'),
        array(
'author, email, url''length''max'=>128),
        array(
'email','email'),
        array(
'url','url'),
    );
}

Тут ми вказуємо, що атрибути author, email та content обовʼязкові. Довжина author, email та url не може перевищувати 128 символів. Атрибут email повинен містити коректну email-адресу. url повинен містити коректний URL.

Зміна методу attributeLabels() #

Змінимо метод attributeLabels(). Задамо свої підписи атрибутам. Цей метод повертає масив пар імʼя атрибута-підпис.

public function attributeLabels()
{
    return array(
        
'id' => 'Номер',
        
'content' => 'Коментар',
        
'status' => 'Статус',
        
'create_time' => 'Час створення',
        
'author' => 'Імʼя автора',
        
'email' => 'Email',
        
'url' => 'Website',
        
'post_id' => 'Запис',
    );
}

Підказка: Якщо підпис атрибуту не заданий у attributeLabels(), для його генерації використовується спеціальний алгоритм. Наприклад, для атрибутів create_time та createTime підпис буде виглядати як Create Time.

Зміна процесу збереження #

Для того, щоб записувати час створення коментаря, перевизначимо метод beforeSave() класу Comment так само, як це зроблено для моделі Post:

protected function beforeSave()
{
    if(
parent::beforeSave())
    {
        if(
$this->isNewRecord)
            
$this->create_time=time();
        return 
true;
    }
    else
        return 
false;
}

Для чого реклама?