Yii ブログシステム作成(10)

Commentモデルのカスタマイズ

属性のルール、名前、ラベルをカスタマイズする。
“rules()”メソッド、”attributeLabels()”メソッドが修正対象

rules()メソッドカスタマイズ

“Comment”モデルを修正

  public function rules()
  {
    // NOTE: you should only define rules for those attributes that
    // will receive user inputs.
    return array(
      array('content, status, author, email, post_id', 'required'),             // 必須
      array('status, create_time, post_id', 'numerical', 'integerOnly'=>true),  // 数値のみ
      array('author, email, url', 'length', 'max'=>128),                        // 128文字まで
      array('email', 'email'),                                                  // メールアドレス
      array('url', 'url'),                                                      // URL
      // The following rule is used by search().
      // @todo Please remove those attributes that should not be searched.
      array('id, content, status, create_time, author, email, url, post_id', 'safe', 'on'=>'search'),
    );
  }

attributeLabels()メソッドのカスタマイズ

モデルの各属性を表示する際のラベルを宣言する。

  public function attributeLabels()
  {
    return array(
      'id' => 'ID',
      'content' => 'コメント',
      'status' => '状態',
      'create_time' => '作成日時',
      'author' => '名前',
      'email' => 'メール',
      'url' => 'ウェブサイト',
      'post_id' => '記事',
    );
  }

保存プロセスのカスタマイズ

コメントの作成時刻を記録するため、”Post”モデル同様、”Comment”モデルの”beforeSave()”メソッドをオーバーライドする。

  /**
   * 
   * 自動設定処理
   * 登録日:crate_time
   * 
   **/
  protected function beforeSave()
  {
    if(parent::beforeSave())
    {
      if($this->isNewRecord)
      {
        // 新規登録:登録時間を登録
        $this->create_time = time();
      }
      return true;
    }
    else
    {
      return false;
    }
  }

参考サイト:
http://www.yiiframework.com/doc/blog/1.1/ja/comment.model

Comments are closed.