RBACRoleSearch.php 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. <?php
  2. /**
  3. * Author: lf
  4. * Blog: https://blog.feehi.com
  5. * Email: job@feehi.com
  6. * Created at: 2020-03-17 23:23
  7. */
  8. namespace backend\models\search;
  9. use backend\models\form\RBACRoleForm;
  10. use yii\data\ArrayDataProvider;
  11. class RBACRoleSearch extends RBACRoleForm implements SearchInterface
  12. {
  13. public function search(array $params = [], array $options = [])
  14. {
  15. $roles = $options['roles'];
  16. if( !$this->load( $params ) ){
  17. $sortedRoles = [];
  18. foreach ($roles as $item){
  19. $model = new RBACRoleForm();
  20. $model->setAttributes($item);
  21. $sortedRoles[] = $model;
  22. }
  23. $dataProvider = new ArrayDataProvider([
  24. 'allModels' => $sortedRoles,
  25. 'pagination' => [
  26. 'pageSize' => -1,
  27. ],
  28. ]);
  29. return $dataProvider;
  30. }
  31. $classNameArray = explode('\\', self::className());
  32. $className = end($classNameArray);
  33. if (isset($params[$className])) {
  34. $searchParams = $params[$className];
  35. foreach ($searchParams as $searchParamKey => $searchParamValue) {
  36. if ($searchParamValue !== '') {
  37. foreach ($roles as $key => $role) {
  38. if (in_array($searchParamKey, ['sort'])) {
  39. if ($role[$searchParamKey] != $searchParamValue) {
  40. unset($roles[$key]);
  41. }
  42. } else {
  43. if (strpos($role[$searchParamKey], $searchParamValue) === false) {
  44. unset($roles[$key]);
  45. }
  46. }
  47. }
  48. }
  49. }
  50. }
  51. $sortedRoles = [];
  52. foreach ($roles as $item){
  53. $model = new RBACRoleForm();
  54. $model->setAttributes($item);
  55. $sortedRoles[] = $model;
  56. }
  57. $dataProvider = new ArrayDataProvider([
  58. 'allModels' => $sortedRoles,
  59. 'pagination' => [
  60. 'pageSize' => -1,
  61. ],
  62. ]);
  63. return $dataProvider;
  64. }
  65. }