marqu3s/yii2-behaviors

Collection of Yii2 behaviors

Installs: 4 059

Dependents: 1

Suggesters: 0

Security: 0

Stars: 11

Watchers: 6

Forks: 4

Open Issues: 0

Type:yii2-behavior

v0.3.6 2016-01-18 00:00 UTC

This package is auto-updated.

Last update: 2024-10-30 15:12:29 UTC


README

Installation

The preferred way to install this extension is through composer. Either run:

php composer.phar require --prefer-dist marqu3s/yii2-behaviors "*"

or add

"marqu3s/yii2-behaviors": "*"

to the require section of your composer.json file.

Available Behaviors

GRID

SaveGridPaginationBehavior

Saves the grid's current page and pageSize in PHP Session so you can restore it later automatically when revisiting the page where the grid is.

Usage: On the model that will be used to generate the dataProvider that will populate the grid, attach this behavior.

public function behaviors()
{
  return [
    'saveGridPage' => [
      'class' => SaveGridPaginationBehavior::class,
      'sessionVarName' => self::class . 'GridPage',
      'sessionPageSizeName' => self::class . 'GridPageSize'
    ]
  ];
}

Then, on your search() method, set the grid current page using one of these:

$dataProvider = new ActiveDataProvider(
  [
    'query' => $query,
    'sort' => ...,
    'pagination' => [
      'page' => $this->getGridPage(), // <- Prefered method
      'pageSize' => $this->getGridPageSize(),
      ...
    ]
  ]
);

OR

$dataProvider->pagination->page = $this->getGridPage();

SaveGridFiltersBehavior

Saves the Grid's current filters in PHP Session on every request and use [[loadWithFilters()]] to get the current filters and assign it to the grid.

Usage: On the model that will be used to generate the dataProvider that will populate the grid, attach this behavior.

public function behaviors()
{
  return [
    'saveGridFilters' => [
      'class' => SaveGridFiltersBehavior::class,
      'sessionVarName' => self::class . 'GridFilters'
    ]
  ];
}

Then, on your search() method, replace $this->load() by $dataProvider = $this->loadWithFilters($params, $dataProvider):

$dataProvider = new ActiveDataProvider(
  [
    'query' => $query,
    'sort' => ...,
    'pagination' => [
      'page' => $this->getGridPage(), // <- Prefered method
      'pageSize' => $this->getGridPageSize(),
      ...
    ]
  ]
);

//$this->load($params); // <-- Replace or comment this
$dataProvider = $this->loadWithFilters($params, $dataProvider); // From SaveGridFiltersBehavior

SaveGridOrderBehavior

Saves the Grid's current order criteria in PHP Session.

Usage: On the model that will be used to generate the dataProvider that will populate the grid, attach this behavior.

public function behaviors()
{
    return [
        'saveGridOrder' => [
            'class' => SaveGridOrderBehavior::class,
            'sessionVarName' => self::class . 'GridOrder'
        ]
    ];
}

Then, on yout search() method, set the grid current order using these code:

$dataProvider->sort->attributeOrders = $this->getGridOrder();

ActiveRecord

LogChangesBehavior

Creates a log everytime a model is created or updated. The log entry contains all changed attributes, their old and new values.

Install: Create the necessary table by using the log_active_record.sql script or by copying the migration script to your migration directory and execute yii migrate. If you want to use your own table, with your own naming conventions, you can customize the behaviour with your table name and columns.

Usage: add it to the behaviors() method of your ActiveRecord model and customize it using it´s attributes.

OPTIONAL: You may implement LogChangesInterface in your ActiveRecord and create a custom getDeletedRecordText() that returns a custom log message when a record is deleted.

public function behaviors()
{
     return [
         'LogChanges' => [
             'class' => LogChangesBehavior::class,

             // Customization
             'valuesReplacement' => [
                 'active' => [
                     0 => 'No',
                     1 => 'Yes',
                 ]
             ],
             'currencyAttributes' => [
                 'subtotal', 'total', 'tax'
             ]
         ],
     ];
}

That's all!