Files
yii/docs/blog/ru/comment.model.txt
2010-03-14 03:51:17 +00:00

84 lines
2.9 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
Доработка модели Comment
========================
В модели `Comment` нам необходимо поправить методы `rules()` и `attributeLabels()`.
Метод `attributeLabels()` возвращает массив заголовков для указанных полей.
Метод `relations()` исправлять не будем так как код, сгенерированный `yiic` нам
подходит.
Изменение метода `rules()`
--------------------------
Начнём с уточнения правил валидации, сгенерированных при помощи `yiic`.
Для комментариев будем использовать следующие правила:
~~~
[php]
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()`. Зададим свои подписи атрибутам. Этот метод
возвращает массив пар имя атрибута-подпись.
~~~
[php]
public function attributeLabels()
{
return array(
'id' => 'Id',
'content' => 'Comment',
'status' => 'Status',
'create_time' => 'Create Time',
'author' => 'Name',
'email' => 'Email',
'url' => 'Website',
'post_id' => 'Post',
);
}
~~~
> Tip|Подсказка: Если подпись атрибута не задана в `attributeLabels()`,
для её генерации используется специальный алгоритм. К примеру, для
атрибутов `create_time` и `createTime` подпись будет выглядеть как
`Create Time`.
Изменение процесса сохранения
-----------------------------
Для того, чтобы записывать время создания комментария, переопределим
метод `beforeSave()` класса `Comment` также, как это сделано для модели `Post`:
~~~
[php]
protected function beforeSave()
{
if(parent::beforeSave())
{
if($this->isNewRecord)
$this->create_time=time();
return true;
}
else
return false;
}
~~~
<div class="revision">$Id: comment.model.txt 1733 2010-01-21 16:54:29Z qiang.xue $</div>