Status Behavior
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:
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
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
$post=Post::model()->findByPk(1); // Getting current status echo $post->getStatus(); // Changing status $post->setStatus('draft'); // Saving model if ($post->save() === FASLE) { echo 'Error!'; } $post = Post::model()->findByPk(1); // Changing status field only $post->setStatus('draft')->saveStatus();
Changelog
0.6 Warning: this version is not backwards compatible to 0.5.
[*] Change setStatus() to took status value and status text. [-] Remove translate statuses. [-] Remove message component. Used 'yiiext' group for messages.
0.5 [] Yii:t() is now used to translate status. [] All private methods and properties transform in protected. [+] Added magic method __toString() to get status. [*] New naming conventions. [+] readme_en.
0.4 [-] Remove getStatusName method. [+] Added param to prevent translating in getStatuses and getStatusText methods.
0.3 [+] Added getStatuses method. [+] Added getStatusName method for return original status without translated.
0.2 [*] Small code corrections.
0.1 [+] Initial public release.