marqu3s/yii2-behaviors

Yii2行为的集合

安装数: 3,230

依赖项: 1

建议者: 0

安全: 0

星标: 11

关注者: 6

分支: 4

开放问题: 0

类型:yii2-behavior

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

This package is auto-updated.

Last update: 2024-09-20 20:54:35 UTC


README

安装

安装此扩展的首选方法是通过composer。运行以下命令之一:

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

或者添加

"marqu3s/yii2-behaviors": "*"

到您的composer.json文件的require部分。

可用行为

GRID

SaveGridPaginationBehavior

将网格的当前页和pageSize保存到PHP会话中,以便您可以在稍后自动恢复网格所在的页面。

用法:在将用于生成填充网格的数据Provider的模型上附加此行为。

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

然后,在您的search()方法中,使用以下之一设置网格当前页:

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

或者

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

SaveGridFiltersBehavior

在每次请求时将网格的当前过滤器保存到PHP会话中,并使用[[loadWithFilters()]]获取当前过滤器并将其分配给网格。

用法:在将用于生成填充网格的数据Provider的模型上附加此行为。

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

然后,在您的search()方法中,将$ this->load()替换为$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

将网格的当前排序条件保存到PHP会话中。

用法:在将用于生成填充网格的数据Provider的模型上附加此行为。

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

然后,在您的search()方法中,使用以下代码设置网格当前排序:

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

ActiveRecord

LogChangesBehavior

每次创建或更新模型时都会创建一个日志。日志条目包含所有更改的属性,以及它们的旧值和新值。

安装:使用log_active_record.sql脚本创建必要的表,或者将迁移脚本复制到您的迁移目录并执行yii migrate。如果您想使用自己的表,使用自己的命名约定,可以自定义行为以使用自己的表名和列。

用法:将其添加到ActiveRecord模型的behaviors()方法中,并使用其属性进行自定义。

可选:您可以在ActiveRecord中实现LogChangesInterface,并创建一个自定义的getDeletedRecordText(),当记录被删除时返回自定义日志消息。

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

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

这就完成了!