1. Go to this page and download the library: Download circulon/yii2-flag-behavior library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
circulon / yii2-flag-behavior example snippets
use circulon\flag\FlagBehavior;
// Recommended to use constants for
// virtual attribute names
const SETTINGS_ACTIVE = 'active';
const SETTINGS_ADMIN = 'admin';
const SETTINGS_POST_COMMENTS = 'postComments';
const SETTINGS_VIEW_REPORTS = 'voewReports';
const SETTINGS_CREATE_REPORTS = 'createReports';
public function behaviors()
{
return [
'FlagBehavior'=> [
'class'=> FlagBehavior::className(),
'fieldattribute' => 'flags', // the db field attribute. Default : 'flags'
// attributes: $flag => $position
// $flag : the attribute name
// $position : the bit position (starting at 0)
'attributes' => [
$this::SETTINGS_ACTIVE => 0, // The bit position order once set
$this::SETTINGS_ADMIN => 1, // MUST NOT BE CHANGED
$this::SETTINGS_POST_COMMENTS => 2, // after any records have been inserted
],
// options: $flag => $options
// $flag : the source attribute
// $options : an array of $operator => $fields
// $operator : (set|clear|not)
// set: sets the attribute to a given value (true|false|'source')
// 'source' will set the attribute to the same as the source ttributes value
// if only the attribute name is provided the attribute is set to true
//
// clear: clears the attributes listed
// not: sets the value of the attributes to the inverse/complement of the source attribute
'options' = [
$this::SETTINGS_ADMIN => [
'set' => [
$this::SETTINGS_POST_COMMENTS, // set to true
$this::SETTINGS_ACTIVE, // set to true
]
],
$this::SETTINGS_ACTIVE => [
'set' => [ $this::SETTINGS_POST_COMMENTS => 'source' ], // set same as SETTINGS_ACTIVE
],
$this::SETTINGS_CREATE_REPORTS => [
'set' => [ $this::SETTINGS_VIEW_REPORTS],
],
],
],
];
}
// get/set db attribute directly
$value = $model->fieldAttribute; // initialy set to 0
$model->fieldAttribute = 6; // set flags to admin and post comments (110)
// change flags
// NOTE:
//
$model->{<class name>::SETTINGS_ACTIVE} = true; // set flag (now 111)
$model->active = true;
$model->setFlag({<class name>::SETTINGS_ADMIN}, false); // clear flag (now 101)
$model->setFlag('postComments', false); // clear flag (now 001)
$model->{<class name>::SETTINGS_ACTIVE} = false; // clear flag (now 000)
// check if a flag/setting is set
if ($model->{<class name>::SETTINGS_POST_COMMENTS}) {
// do something here
}
if (!$model->active) {
// show error message
}
if ($model->hasFlag({<class name>::SETTINGS_ADMIN})) {
// allow admin user to ....
}
//
$model = new MyModelWithFlags()
$query = MyModelWithFlags::find();
// add additional criteria as assumed true
MyModelWithFlags::SETTING_VIEW_REPORTS => false // optionally set the specific (bool or int 1/0) search value
]);
// get records
$query->all();
// DataProvider
$dataProvider = new ActiveDataProvider(['query' => $query]);
$searchQuery = PrimarySearchModel::find();
// add criteria....
$model = new MyModelWithFlags()
$searchQuery = $model->addFlagsCriteria($searchQuery, [
MyModelWithFlags::SETTING_ACTIVE, // Flags with no value are assumed true
MyModelWithFlags::SETTING_VIEW_REPORTS => false // optionally set the specific (bool or int 1/0) search value
], true); // generate tablename prefixes
$otherModel = new MyOtherModelWithFlags()
// add additional criteria as
$ php composer.phar
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.