Page.php 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. <?php
  2. namespace app\admin\controller\cms;
  3. use app\admin\model\cms\Page as PageModel;
  4. use app\admin\model\cms\PageData;
  5. use app\admin\model\general\Lang as LangModel;
  6. use app\common\controller\Backend;
  7. use Exception;
  8. use think\db\exception\PDOException;
  9. use think\exception\ValidateException;
  10. use think\facade\Db;
  11. class Page extends Backend
  12. {
  13. protected $modelClass = null;
  14. protected function initialize()
  15. {
  16. parent::initialize();
  17. $this->modelClass = new PageModel;
  18. }
  19. public function edit()
  20. {
  21. $catid = $this->request->param('catid/d', 0);
  22. $lang = $this->request->param('lang/s', LangModel::getDefaultMark());
  23. $row = $this->modelClass->where('catid', $catid)->find();
  24. if (!$row) {
  25. $this->error('记录未找到');
  26. }
  27. $adminIds = $this->getDataLimitAdminIds();
  28. if (is_array($adminIds)) {
  29. if (!in_array($row[$this->dataLimitField], $adminIds)) {
  30. $this->error('你没有权限访问');
  31. }
  32. }
  33. if ($this->request->isPost()) {
  34. $params = $this->request->post('row/a');
  35. if ($params) {
  36. $params = $this->preExcludeFields($params);
  37. Db::startTrans();
  38. try {
  39. $saveLang = $params['lang'] ?? $lang;
  40. $this->modelClass->savePage($params, $saveLang);
  41. Db::commit();
  42. } catch (ValidateException | PDOException | Exception $e) {
  43. Db::rollback();
  44. $this->error($e->getMessage());
  45. }
  46. $this->success('修改成功');
  47. }
  48. $this->error('参数不能为空');
  49. }
  50. $data = $this->modelClass->getPageWithLang($catid, $lang);
  51. $langs = LangModel::getEnabledList();
  52. $langStatus = [];
  53. foreach ($langs as $item) {
  54. $langStatus[$item->mark] = PageData::where(['page_id' => $row->id, 'lang' => $item->mark])->count() > 0 ? 1 : 0;
  55. }
  56. $this->view->assign('data', $data);
  57. $this->view->assign('langs', $langs);
  58. $this->view->assign('currentLang', $lang);
  59. $this->view->assign('defaultLang', LangModel::getDefaultMark());
  60. $this->view->assign('langStatus', $langStatus);
  61. return $this->fetch();
  62. }
  63. }