<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                >[danger]注意在模板頁面不要添加queryParams:function參數,此參數在框架中擴展了,添加后會請求兩次,導致你的搜索條件被重置 ## **新建數據庫數據表** 模型管理新建模型-【表名稱】就是數據庫自動生成的數據表,然后在【字段管理】添加該表的字段 >[danger]選擇`CMS`:主鍵、create\_time、update\_time、\[sort 勾選排序字段時\]、\[status 勾選狀態字段時\]、\[cate\_id, hits, keywords, description, template, url \] 選擇`后臺`:主鍵、create\_time、update\_time、\[sort 勾選排序字段時\]、\[status 勾選狀態字段時\] >注意添加字段名時小心的去掉**前后空格**,此cms提交時沒有trim過濾,否則在增改時對該字段失效,如果不小心發現空格那么請對此表和field表的模型id對應的字段進行修改 以下模塊為系統內置模塊,無法生成代碼和菜單規則,如需修改請直接修改代碼 ~~~ 'Admin', 'AdminLog', 'AuthGroup', 'AuthRule', 'Module', 'Field', 'Cate' ~~~ 以下為保留名稱新建模塊時不可做為表名稱使用(已有控制器) ~~~ 'config', 'database', 'demo', 'index', 'login', 'plugin', 'template','upload' ~~~ **特殊字段說明** | 字段 | 字段名稱 | 字段類型 | 必須存在 | 字段說明 | | --- | --- | --- | --- | --- | | id | 主鍵 | int / mediumint 等 | 是 | 主鍵可以為其他 | | create\_time | 創建時間 | int | 是 | 自動時間戳 | | update\_time | 更新時間 | int | 是 | 自動時間戳 | | sort | 排序(權重) | int / mediumint 等 | 否 | 建議設置默認值為`50` | | status | 狀態 | tinyint / int / mediumint 等 | 否 | 值只能為`1`或`0`(顯示/隱藏) | | \- | \- | \- | \- | \- | | cate\_id | 欄目ID | tinyint / int / mediumint 等 | 是(表類型為`CMS`時) | 欄目ID | | hits | 點擊次數 | int / mediumint 等 | 是(表類型為`CMS`時) | 瀏覽/點擊次數 | | keywords | 關鍵詞 | varchar / char / text / mediumtext | 是(表類型為`CMS`時) | SEO關鍵詞 | | description | 描述 | varchar / char / text / mediumtext | 是(表類型為`CMS`時) | SEO描述 | | template | 模板 | varchar / char / text / mediumtext | 是(表類型為`CMS`時) | 自定義模板 | | url | 跳轉地址 | varchar / char / text / mediumtext | 是(表類型為`CMS`時) | 自定義跳轉地址 | **以特殊字符結尾的規則** | 結尾字符 | 示例 | 類型要求 | 字段說明 | | --- | --- | --- | --- | | time | pay\_time | int | 識別為日期時間 | | image | user\_image | varchar / char / text / mediumtext | 識別為單圖片上傳 | | images | user\_images | varchar / char / text / mediumtext | 識別為多圖片上傳 | | file | product\_file | varchar / char / text / mediumtext | 識別為單文件上傳 | | files | product\_files | varchar / char / text / mediumtext | 識別為多文件上傳 | | avatar | user\_image | varchar / char / text / mediumtext | 識別為單圖片上傳 | | avatars | user\_images | varchar / char / text / mediumtext | 識別為多圖片上傳 | | content | news\_content | varchar / char / text / mediumtext | 識別為編輯器 | | password | user\_password | varchar / char | 識別為密碼 | ### **模型關聯** 模型關聯時數據源必須選擇模型數據,關聯模型就是要關聯的主表,展示字段就是顯示關聯表的那個字段 **例如:** 從表contract中存在tender_id、party_company、salesman_id 關聯主表Tender 在contract模型中編輯tender_id字段設置如下: ![](https://img.kancloud.cn/29/d9/29d992b338e39b1b4b14a8d0eef83b67_1409x196.png) ![](https://img.kancloud.cn/d8/50/d850f849f125c49921bd134faaf31a7e_1062x172.png) ![](https://img.kancloud.cn/f7/f7/f7f7eeaa7e24ce83d3b22f21cacbab86_1214x161.png) 在**主表**(不包含外鍵)的模型中建立關聯關系,用**hasOne** 在**從表**(包含外鍵)模型中建立關聯關系,用**belongsTo** ``` namespace app\common\model; class Contract extends Base { // 定義時間戳字段名 protected $createTime = 'create_time'; protected $updateTime = 'update_time'; public function salesman() { return $this->belongsTo('Salesman', 'salesman_id'); } //hasOne('關聯從表模型名','從表外鍵名','主表主鍵名',\['模型別名定義'\],'join類型,默認`INNER`'); //belongsTo('關聯主表模型名','從表外鍵名','關聯表主表鍵名',\['模型別名定義'\],'join類型'); public function partyCompany() { return $this->belongsTo('PartyCompany', 'party_company'); } public function tender() { return $this->belongsTo('Tender', 'tender_id'); } } ``` TableBuilder::fetch() 和FormBuilder::fetch() 只負責分配變量和渲染模板,他們的其他方法幾乎都是組裝$this->_vars(即要分配的變量) ~~~ View::assign($this->_vars); return View::fetch($this->_template); ~~~ 表格的數據都是通過ajax獲取的,表格ajax請求的地址【列表頁?getList=1】,于是我們在index的方法里獲取getList參數且值=1我們就通過繼承Base的模型::getList查詢相應的數據(默認返回數據集)然后傳入MakeBuilder::changeTableData()將數據集轉成數組,然后格式化成想要的數據后返回此數組(php數組格式bootstraptable能識別?) 此cms列表頁index方法默認在Base.php中, ``` // 列表 public function index() { // 獲取主鍵 $pk = MakeBuilder::getPrimarykey($this->tableName); // 獲取列表數據 $columns = MakeBuilder::getListColumns($this->tableName); // 獲取搜索數據 $search = MakeBuilder::getListSearch($this->tableName); // 獲取當前模塊信息 $model = '\app\common\model\\' . $this->modelName; $module = \app\common\model\Module::where('table_name', $this->tableName)->find(); // 搜索 if (Request::param('getList') == 1) { $where = MakeBuilder::getListWhere($this->tableName);//此處默認是沒有條件的,只有搜索時才會有對應的條件 //如果我們要在默認時添加別的條件,如默認查詢顯示1年的信息 $start_time=strtotime(date("Y")."-01-01"); $end_time= strtotime(date("Y-m-d",time())); $extraWhere[]=['inmonth', 'between', [$start_time, $end_time]]; $where=$where+$extraWhere; $orderByColumn = Request::param('orderByColumn') ?? $pk; $isAsc = Request::param('isAsc') ?? 'desc'; return $model::getList($where, $this->pageSize, [$orderByColumn => $isAsc]); } // 檢測單頁模式 $isSingle = MakeBuilder::checkSingle($this->modelName); if ($isSingle) { return $this->jump($isSingle); } // 獲取新增地址 $addUlr = MakeBuilder::getAddUrl($this->tableName); // 構建頁面 return TableBuilder::getInstance() ->setUniqueId($pk) // 設置主鍵 ->addColumns($columns) // 添加列表字段數據 ->setSearch($search) // 添加頭部搜索 ->addColumn('right_button', '操作', 'btn') // 啟用右側操作列 ->addRightButtons($module->right_button) // 設置右側操作列 ->addTopButtons($module->top_button) // 設置頂部按鈕組 ->setAddUrl($addUlr) // 設置新增地址 ->fetch(); } } ``` 在index方法if (Request::param('getList') == 1) {}里打印Request::param()參數顯示有七個參數["getList",'pageSize','page','orderByColumn','isAsc','title','status']他們都代表什么呢? **getList:** 表示表格請求的數據列表的參數, **pageSize:** 表格每頁顯示最多的行數 **page:** 表格當前頁 **orderByColumn:** 表示id **isAsc**指示激活排序那列是升序還是降序 **title:** 開啟搜索的那個字段(默認管理開啟-字段管理-開啟搜索,所以搜索不止一個字段) **status** 字段是否是啟用狀態。(也是字段管理開啟顯示狀態開關,然后點擊開關就是變幻的這個狀態) 列表頁返回數據時需要返回total、per_page、current_page、last_page ``` { "total": 2,//總數居 "per_page": 10,//每頁顯示多少條 "current_page": 1,//table顯示的當前頁數 "last_page": 1,//總頁數 "data": [ { "id": 2, "create_time": "2021-09-23 13:07:21", "update_time": "2021-09-23 13:07:21", "sort": 50, "status": 1, "title": "啊實打實的" }, { "id": 1, "create_time": "2021-09-18 09:38:07", "update_time": "2021-09-18 09:38:07", "sort": 50, "status": 1, "title": "阿松大", "myname": "aaaaa" } ] } ``` 好啦知道怎么返回數據了吧 ### **系統字典(一般用于select框這種分類)** 字典類型頁面新增【字典名稱】 字典頁面新增字典數據,字典標簽就是select的顯示的文字,字典鍵值就是select的value ![](https://img.kancloud.cn/fc/c8/fcc83cf1764d6e9fe1d4a8b5d983c2ab_682x378.png) ## **生成控制器。模型。驗證器文件** 勾選要生成文件的模型--然后左鍵點擊【代碼生成】則生成三個文件,生成指定的文件則左鍵點擊右邊的倒三角符號 ![](https://img.kancloud.cn/69/0e/690ec97c4f2513db768121c62c1ee9c8_644x176.png) >[danger]注意模型文件在app/common/model文件夾下 **生成菜單規則** 列表(index)、新增(add)、新增/添加保存(addPost)、修改(edit)、修改保存(editPost)、刪除(del)、批量刪除(selectDel)、導出(export)、狀態(state)、排序(sort) 等規則
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看