본문 바로가기

Yii Framework/블로그 만들기

13. Comment 모델의 정의

이 곳은 제가 개인적으로 YII framework의 블로그 만들기를 번역해 놓은 곳입니다.

제가 영어 전공자도.. 그렇다고 영어랑 친하지도 않습니다. 

그래서 보시면 뭔가 글도 엉성하고 말이 안맞는게 많습니다.

잘못 오역된 부분이라던지 그런 부분들 친절하게 알려주시면 바로 수정하겠습니다.

이 페지의 원글 http://www.yiiframework.com/doc/blog/1.1/en/comment.model



Comment 모델의 정의 

Comment 모델은 주로 rules () 메소드와 attributeLabels () 메서드를 정의합니다. attributeLabels () 메서드는 속성 이름과 속성의 레이블 대응표를 돌려줍니다. relations () 는 yiic 도구에서 생성 된 코드로 충분하기 때문에 별도로 손댈 필요가 없습니다.

1. rules() 메소드의 정의

먼저 yiic 도구에서 생성 한 검증 규칙을 정의합니다. 주석에 대한 규칙은 다음과 같습니다.

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 속성은 유효한 이메일 주소임을, url 속성은 유효한 URL이어야합니다.


2. attributeLabels() 메소드의 정의

다음 attributeLabels() 메서드를 정의하여 모델의 각 특성을 볼 때 레이블을 선언합니다. 이 방법은 name-label 쌍으로 구성되는 배열을 돌려줍니다. CHtml::activeLabel() 를 호출하면 각속성의 레이블을 볼 수 있습니다.

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. 저장 프로세스의 정의

댓글 작성 시간을 기록하고 싶기 때문에, Post 모델과 마찬가지로 Comment 의 beforeSave() 메서드를 재정의합니다.

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