yiiext/status-behavior

There is no license information available for the latest version (0.7) of this package.

Yii Framework Active Record Status behavior for models

0.7 2013-10-30 08:00 UTC

This package is auto-updated.

Last update: 2024-12-13 11:34:08 UTC


README

Can be used with models to add functions to manage model status.

Installing and configuring

Add field to model and DB table. Field status is used as example. Field type depends on behavior configuration.

Configure model:

<?php
class Post extends CActiveRecord {
    public function behaviors() {
        return array(
            'statuses' => array(
                'class' => 'ext.yiiext.behaviors.model.status.EStatusBehavior',
                // Field used for status
                'statusField' => 'status',
                // Allowed statuses. Default is array('draft', 'published', 'archived').
                // One can pass an array where key is DB field name, value is what user will see.
                // 'statuses' => array('draft', 'published', 'archived'),
                // 'statuses' => array('d' => 'draft', 'p' => 'published', 'a' => 'archived'),
            ),
        );
    }
}

Examples

Configuring models

<?php
class Post extends CActiveRecord {
    public function behaviors() {
        return array(
            'statuses' => array(
                'class' => 'ext.CStatusBehavior.CStatusBehavior',
                'statusField' => 'status',
            ),
        );
    }
}

class Book extends CActiveRecord {
    public function behaviors() {
        return array(
            'statuses' => array(
                'class' => 'ext.CStatusBehavior.CStatusBehavior',
                'statusField' => 'status',
                'statuses' => array(
                  'new' => 'new',
                  'reserved' => 'reserved',
                  'sale' => 'sale',
                ),
            ),
        );
    }
}

Using statuses

<?php
$post=Post::model()->findByPk(1);
// Getting current status
echo $post->getStatus();
// Changing status
$post->setStatus('draft');
// Saving model
if ($post->save() === FALSE) {
    echo 'Error!';
}

$post = Post::model()->findByPk(1);
// Changing status field only
$post->setStatus('draft')->saveStatus();