Limit.php 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. <?php
  2. namespace Dcat\Admin\Grid\Displayers;
  3. use Dcat\Admin\Admin;
  4. use Dcat\Admin\Support\Helper;
  5. class Limit extends AbstractDisplayer
  6. {
  7. protected function addScript()
  8. {
  9. $script = <<<'JS'
  10. $('.limit-more').click(function () {
  11. $(this).parent('.limit-text').toggleClass('d-none').siblings().toggleClass('d-none');
  12. });
  13. JS;
  14. Admin::script($script);
  15. }
  16. public function display($limit = 100, $end = '...')
  17. {
  18. // 数组
  19. if ($this->value !== null && ! is_scalar($this->value)) {
  20. $value = Helper::array($this->value);
  21. if (count($value) <= $limit) {
  22. return $value;
  23. }
  24. $value = array_slice($value, 0, $limit);
  25. array_push($value, $end);
  26. return $value;
  27. }
  28. // 字符串
  29. $this->addScript();
  30. $value = Helper::strLimit($this->value, $limit, $end);
  31. $original = $this->column->getOriginal();
  32. if ($value == $original) {
  33. return $value;
  34. }
  35. return <<<HTML
  36. <div class="limit-text">
  37. <span class="text">{$value}</span>
  38. &nbsp;<a href="javascript:void(0);" class="limit-more">&nbsp;<i class="fa fa-angle-double-down"></i></a>
  39. </div>
  40. <div class="limit-text d-none">
  41. <span class="text">{$original}</span>
  42. &nbsp;<a href="javascript:void(0);" class="limit-more">&nbsp;<i class="fa fa-angle-double-up"></i></a>
  43. </div>
  44. HTML;
  45. }
  46. }