GridCreator.php 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. <?php
  2. namespace Dcat\Admin\Scaffold;
  3. trait GridCreator
  4. {
  5. /**
  6. * @param string $primaryKey
  7. * @param array $fields
  8. *
  9. * @return string
  10. */
  11. protected function generateGrid(string $primaryKey = null, array $fields = [], $timestamps = null)
  12. {
  13. $primaryKey = $primaryKey ?: request('primary_key', 'id');
  14. $fields = $fields ?: request('fields', []);
  15. $timestamps = $timestamps === null ? request('timestamps') : $timestamps;
  16. $rows = [
  17. "\$grid->column('{$primaryKey}')->sortable();",
  18. ];
  19. foreach ($fields as $field) {
  20. if (empty($field['name'])) {
  21. continue;
  22. }
  23. if ($field['name'] == $primaryKey) {
  24. continue;
  25. }
  26. $rows[] = " \$grid->column('{$field['name']}');";
  27. }
  28. if ($timestamps) {
  29. $rows[] = ' $grid->column(\'created_at\');';
  30. $rows[] = ' $grid->column(\'updated_at\')->sortable();';
  31. }
  32. $rows[] = <<<EOF
  33. \$grid->filter(function (Grid\Filter \$filter) {
  34. \$filter->equal('$primaryKey');
  35. });
  36. EOF;
  37. return implode("\n", $rows);
  38. }
  39. }