0 follower

Доработка модели Comment

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

1. Изменение метода 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.

2. Изменение метода attributeLabels()

Изменим метод attributeLabels(). Зададим свои подписи атрибутам. Этот метод возвращает массив пар имя атрибута-подпись.

public function attributeLabels()
{
    return array(
        'id' => 'Id',
        'content' => 'Comment',
        'status' => 'Status',
        'create_time' => 'Create Time',
        'author' => 'Name',
        'email' => 'Email',
        'url' => 'Website',
        'post_id' => 'Post',
    );
}

Подсказка: Если подпись атрибута не задана в attributeLabels(), для её генерации используется специальный алгоритм. К примеру, для атрибутов create_time и createTime подпись будет выглядеть как Create Time.

3. Изменение процесса сохранения

Для того, чтобы записывать время создания комментария, переопределим метод beforeSave() класса Comment также, как это сделано для модели Post:

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

Found a typo or you think this page needs improvement?
Edit it on github !