forked from yiiext/status-behavior
-
Notifications
You must be signed in to change notification settings - Fork 1
/
readme_en.txt
82 lines (73 loc) · 2.04 KB
/
readme_en.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
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:
~~~php
<?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
<?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
<?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();
~~~