0 follower

Dostosowywanie modelu komentarza

Dla modelu komentarza Comment musimy głównie dostosować metody rules() oraz attributeLabels(). Metoda attributeLabels() zwraca mapowanie pomiędzy nazwą atrybutu a etykietą atrybutu. Nie potrzebujemy dotykać metody relations() ze względu na to, że kod wygenerowany przez narzędzie yiic jest wystarczająco dobry.

1. Dostosowywanie metody rules()

Najpierw dostosowujemy reguły sprawdzania poprawności wygenerowane przez narzędzie yiic. Następujące reguły są używane dla komentarzy:

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

W powyższym kodzie, określamy, że atrybuty: autor author, e-mail email oraz zawartość content są atrybutami wymaganymi (nie mogą być puste); długość atrybutu autor author, e-mail email oraz adres URL url nie może przekraczać 128 (znaków); atrybut e-maila email musi być poprawnym adresem mailowym; atrybut adresu URL url musi być poprawnym adresem URL.

2. Dostosowywanie metody attributeLabels()

Następnie dostosowujemy metodę attributeLabels() aby zdefiniować etykiety wyświetlane dla każdego z atrybutów modelu. Metoda ta zwraca tablicę par nazwa-etykieta.

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

Wskazówka: Jeśli etykieta dla atrybutu nie jest zadeklarowana w metodzie attributeLabels() do wygenerowania odpowiedniej etykiety zostanie użyty algorytm. Na przykład, etykieta Create Time będzie wygenerowana dla atrybutu create_time bądź też createTime.

3. Dostosowywanie procesu zapisywania

Ponieważ chcemy zapisać czas utworzenia komentarza, nadpisujemy metody beforeSave() komentarza Comment tak jak to zrobiliśmy dla modelu wiadomości 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 !