Table.php 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. <?php
  2. namespace Dcat\Admin\Grid\Displayers;
  3. use Illuminate\Support\Arr;
  4. class Table extends AbstractDisplayer
  5. {
  6. public function display($titles = [])
  7. {
  8. if (empty($this->value)) {
  9. return '';
  10. }
  11. if (empty($titles)) {
  12. $titles = array_keys($this->value[0]);
  13. }
  14. if (Arr::isAssoc($titles)) {
  15. $columns = array_keys($titles);
  16. } else {
  17. $titles = array_combine($titles, $titles);
  18. $columns = $titles;
  19. }
  20. $data = array_map(function ($item) use ($columns) {
  21. $sorted = [];
  22. $arr = Arr::only($item, $columns);
  23. foreach ($columns as $column) {
  24. if (array_key_exists($column, $arr)) {
  25. $sorted[$column] = $arr[$column];
  26. }
  27. }
  28. return $sorted;
  29. }, $this->value);
  30. $variables = [
  31. 'titles' => $titles,
  32. 'data' => $data,
  33. ];
  34. return view('admin::grid.displayer.table', $variables)->render();
  35. }
  36. }