Template.php 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. <?php
  2. namespace app\admin\controller\wwh;
  3. use app\common\controller\Backend;
  4. use think\Db;
  5. class Template extends Base
  6. {
  7. /**
  8. * Template模型对象
  9. * @var \app\admin\model\wwh\Template
  10. */
  11. protected $model = null;
  12. protected $searchFields = 'id,name,listtpl,showtpl';
  13. public function _initialize()
  14. {
  15. parent::_initialize();
  16. $this->model = new \app\admin\model\wwh\Template;
  17. }
  18. /**
  19. * 查看
  20. */
  21. public function index()
  22. {
  23. //设置过滤方法
  24. $this->request->filter(['strip_tags', 'trim']);
  25. if (false === $this->request->isAjax()) {
  26. return $this->view->fetch();
  27. }
  28. //如果发送的来源是 Selectpage,则转发到 Selectpage
  29. if ($this->request->request('keyField')) {
  30. return $this->selectpage();
  31. }
  32. [$where, $sort, $order, $offset, $limit] = $this->buildparams();
  33. $list = $this->model
  34. ->where($where)
  35. ->order($sort, $order)
  36. ->paginate($limit);
  37. $result = ['total' => $list->total(), 'rows' => $list->items()];
  38. return json($result);
  39. }
  40. /**
  41. * 获取模板列表
  42. */
  43. public function get_template_list()
  44. {
  45. $params = $this->request->only(['keyValue', 'type', 'name'], 'request');
  46. // 如果有指定keyValue,直接返回
  47. if (!empty($params['keyValue'])) {
  48. return ['total' => 1, 'list' => [['name' => $params['keyValue']]]];
  49. }
  50. $files = [];
  51. $this->request->filter(['strip_tags']);
  52. // 处理自定义模板名称
  53. if (!empty($params['name'])) {
  54. $files[] = ['name' => $params['name'] . '.html'];
  55. }
  56. // 从数据库获取模板配置
  57. $template = Db::name('wwh_config')
  58. ->where('lang', 1)
  59. ->value('template') ?: 'default';
  60. $themeDir = ADDON_PATH . 'wwh' . DS . 'view' . DS . $template . DS;
  61. // 获取目录下所有文件
  62. if (is_dir($themeDir)) {
  63. foreach (scandir($themeDir) as $filename) {
  64. if ($filename === '.' || $filename === '..') {
  65. continue;
  66. }
  67. // 根据类型过滤文件
  68. if (!empty($params['type'])) {
  69. $rule = $params['type'] === 'column' ? '(column|list)' : $params['type'];
  70. if (!preg_match("/^{$rule}(.*)/i", $filename)) {
  71. continue;
  72. }
  73. }
  74. $files[] = ['name' => $filename];
  75. }
  76. }
  77. return [
  78. 'total' => count($files),
  79. 'list' => $files
  80. ];
  81. }
  82. }