HasElementNames.php 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137
  1. <?php
  2. namespace Dcat\Admin\Grid\Concerns;
  3. use Dcat\Admin\Grid;
  4. /**
  5. * @method Grid\Model model()
  6. * @method Grid\Filter getFilter()
  7. */
  8. trait HasElementNames
  9. {
  10. /**
  11. * Grid name.
  12. *
  13. * @var string
  14. */
  15. protected $__name;
  16. /**
  17. * HTML element names.
  18. *
  19. * @var array
  20. */
  21. protected $elementNames = [
  22. 'grid_row' => 'grid-row',
  23. 'grid_select_all' => 'grid-select-all',
  24. 'grid_per_page' => 'grid-per-pager',
  25. 'grid_batch' => 'grid-batch',
  26. 'export_selected' => 'export-selected',
  27. 'selected_rows' => 'selectedRows',
  28. ];
  29. /**
  30. * Set name to grid.
  31. *
  32. * @param string $name
  33. *
  34. * @return $this
  35. */
  36. public function setName($name)
  37. {
  38. $this->__name = $name;
  39. $model = $this->model();
  40. $model->setPerPageName("{$name}_{$model->getPerPageName()}")
  41. ->setPageName("{$name}_{$model->getPageName()}")
  42. ->setSortName("{$name}_{$model->getSortName()}");
  43. $this->getFilter()->setName($name);
  44. $this->setExporterQueryName($name);
  45. $this->setQuickSearchQueryName($name);
  46. return $this;
  47. }
  48. /**
  49. * Get name of grid.
  50. *
  51. * @return string
  52. */
  53. public function getName()
  54. {
  55. return $this->__name;
  56. }
  57. /**
  58. * @return string
  59. */
  60. public function getGridRowName()
  61. {
  62. return $this->elementNameWithPrefix('grid_row');
  63. }
  64. /**
  65. * @return string
  66. */
  67. public function getSelectAllName()
  68. {
  69. return $this->elementNameWithPrefix('grid_select_all');
  70. }
  71. /**
  72. * @return string
  73. */
  74. public function getPerPageName()
  75. {
  76. return $this->elementNameWithPrefix('grid_per_page');
  77. }
  78. /**
  79. * @return string
  80. */
  81. public function getGridBatchName()
  82. {
  83. return $this->elementNameWithPrefix('grid_batch');
  84. }
  85. /**
  86. * @return string
  87. */
  88. public function getExportSelectedName()
  89. {
  90. return $this->elementNameWithPrefix('export_selected');
  91. }
  92. /**
  93. * @return string
  94. */
  95. public function getSelectedRowsName()
  96. {
  97. $elementName = $this->elementNames['selected_rows'];
  98. if ($this->__name) {
  99. return sprintf('%s%s', $this->__name, ucfirst($elementName));
  100. }
  101. return $elementName;
  102. }
  103. /**
  104. * @return string
  105. */
  106. protected function elementNameWithPrefix($name)
  107. {
  108. $elementName = $this->elementNames[$name];
  109. if ($this->__name) {
  110. return sprintf('%s-%s', $this->__name, $elementName);
  111. }
  112. return $elementName;
  113. }
  114. }