<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智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                ### 目錄結構說明 * 目前,apiex主要包含了如下幾個核心文件,即apiex和apiex的traits。 * 核心功能目錄如下: ``` ????????//?繼承api基類的apiex控制器 ????????\\application\\common\\controller\\Apiex.php ????????//?apiex控制器的traits ????????\\application\\common\\library\\traits\\Apiex.php ????????//?apiex用戶權限類?AuthForApiex及其?對應的trait?AuthExtend ????????\\application\\common\\library\\AuthForApiex.php ????????\\application\\common\\library\\traits\\AuthExtend.php ????????//?其他擴展功能目錄(如果不需要,可以直接刪除,不影響apiex核心功能) ????????//?對thinkphp的model類中的某些方法擴展和新功能添加 ????????\\application\\common\\library\\traits\\ModelExtend.php ????????//?對thinkphp的validate類中的某些方法擴展和新功能添加 ????????\\application\\common\\library\\traits\\ValidateExtend.php ????????//?URL?解析類 ????????\\application\\common\\library\\Urlparse.php ????????//?頁碼計算器 ????????\\application\\common\\library\\PageCalculator.php ``` ### 使用說明: * apiex是對api的繼承和擴展,因而,只要在原始使用api的控制器中引入apiex并改為繼承apiex即可。 * 其他的功能擴展需要在對應的model和validate中引入對應trait。 * 注意:apiex原則上不會影響已經開發完成的功能,即不會與原始api產生沖突,可放心使用。 ### 功能說明 * apiex無法獨立存在,它是依附于api基類存在的,是對?api?在?數據庫操作方面?和?接口安全?的擴展。、 * 基礎的代碼邏輯與backend一致,即:在后臺怎么使用backend,就怎么使用apiex。 * 由于后臺的權限是基于admin表進行控制,而api部分是基于user表進行控制,因而,有些權限方面的開發會有缺失。針對這一方面,盡量進行了彌補,即,可以在數據表中,加入?user\_id?,然后,在控制器中,設置protected?$dataLimit?=?'personal';?來實現用戶對于數據的權限控制,目前,由于user表邏輯中,不存在上下級關系,因而,只能實現person邏輯,而無法具備?auth?邏輯。 ### 其他擴展功能說明 * 對于“對thinkphp的model類中的某些方法擴展和新功能添加方面”方面 * 此功能擴展主要是對model中的場景驗證進行完善。 * 增加“實時設置場景驗證方法”和“重寫“自動驗證數據”,使得驗證類可以支持實時的場景驗證。” * 所謂“實時設置場景驗證方法”,與現有的場景驗證不同的是,當前場景驗證是對前臺提交的數據進行“死規則驗證”(所謂死規則驗證就是指驗證規則一旦寫死,將不能對某些參數值進行修改)。這樣的驗證不具有靈活性,不能結合控制器中的邏輯判斷進行進一步驗證。 * 示例:現在前臺提交了用戶的文章信息,后臺所有用戶的文章均保存在同一張表中,此時,要求對于同一用戶,不允許出現文章標題重復,而不同的用戶可以實現標題重復。 * 分析:面對這樣的要求,只是使用簡單的字段唯一性驗證已經不能滿足,而使用tp提供的多字段唯一驗證的前提條件是,前臺提交的數據包含了所有需要進行唯一性驗證的數據。具體來說,我們這里要判斷?user\_id,title?兩個字段同時相同時,才認為此數據是重復數據,而依照fastadmin的權限驗證邏輯,前臺是無需提交?user\_id的,而只需要提交token或者賬號密碼,當然,如果非要說我就是要求前臺提交user\_id,那么也可以,但是,如果現在就只要求前臺提交token或賬號密碼信息,則此時我們只能從auth類中獲取user\_id,那么,這就要求我們的驗證規則中的user\_id部分必須是動態的。 * 解決: ``` ?????????????//?增加“實時設置場景驗證方法”。 ????????????????/** ???????????????? *?實時設置場景驗證方法 ???????????????? *?@param?Array?$sence?\[description\] ???????????????? */ ????????????????public?function?setCurrentScene(Array?$scene) ????????????????//?使用方法: ????????????????//?在對應需要此驗證方法的model中,引入此traits ????????????????/** ???????????????? *?引入對thinkphp的model類中的某些方法擴展和新功能添加的traits ???????????????? */ ????????????????use?\\app\\common\\library\\traits\\ModelExtend; ????????????????//?在對應控制器的方法中,添加如下場景設置: ????????????????$name?=?str\_replace("\\\\model\\\\",?"\\\\validate\\\\",?get\_class($this->model)); ????????????????$validate?=?is\_bool($this->modelValidate)???($this->modelSceneValidate???$name?.?'.add'?:?$name)?:?$this->modelValidate; ????????????????//設置添加時的場景驗證 ????????????????$currentScene?=?[ ????????????????????'add'?=>?[ ????????????????????????"name"?=>?"require|unique:monitoring_plan,name,'','',".$params['user_id'].",user_id,deletetime", ????????????????????????'first_keywords'?=>?"requireIf:second_keywords^third_keywords,''^''", ????????????????????????'second_keywords'?=>?"requireIf:first_keywords^third_keywords,''^''", ????????????????????????'third\_keywords'?=>?"requireIf:second\_keywords^first\_keywords,''^''", ????????????????????], ????????????????]; ????????????????//設置驗證類的基礎驗證信息 ????????????????$this->model->validate($validate)->setCurrentScene($currentScene); ????????????????//?此場景驗證只能設置一個場景,如只設置?add?或?edit?,不能一起設置,畢竟是為了實時場景進行的驗證。 ????????????????//?設置實時的場景驗證時,需要依賴對validate的重寫traits,具體的調用方法看下面的“對thinkphp的validate類中的某些方法擴展和新功能添加”的說明即可。 ``` * 對于“對thinkphp的validate類中的某些方法擴展和新功能添加”方面 * 目前,主要是對已有方法的重寫,但是,為了兼容其原始功能,保留了其原始功能和使用方法的基礎上,進行了二次開發。所以,不會破壞已有的判斷邏輯。 * 重寫的方法如下: * requireIf * unique * scene * 具體重寫后的功能和使用方法可以參考對應代碼注釋 * 引入和使用方法: ``` ?//在對應已有的validate中,進入此traits /** *?對thinkphp的validate類中的某些方法擴展和新功能添加的traits\ */ use?\\app\\common\\library\\traits\\ValidateExtend; //?此時,由于traits的作用,使得原始的驗證方法失效,轉而使用重寫的方法,當然,重寫后的方法仍然支持官方提供的調用方法和使用邏輯,可以放心使用。 ``` * 對于“URL?解析類”方面 * 此解析類的出現,是為了彌補php本身parse_url函數的功能缺失問題。 * 目前,parse_url?在進行url分析后,只能獲取攜帶主機信息的完整域名信息,但是無法獲取根域名,因而,對應給出了此解析類。 * 目前,此解析類提供兩種方法 * 根據URL提取根域名:getBaseDomain(string?$url) * 判斷是否為正確域名:isDomain($domain) * 使用方法: ``` ???//?為了方便作為工具類使用,getBaseDomain使用了靜態方法定義,如下調用即可: ???//?調用URL?解析類中的根據URL提取根域名方法,分析并獲取用戶輸入的根域名 ???$domain?=?\\app\\common\\library\\Urlparse::getBaseDomain($url); ``` * 對于“頁碼計算器”方面 * 頁碼計算器時為了面向對于一批數據進行分頁時,需要計算開始位置和給出總頁數而設計的簡單工具類。 * 目前已有的方法: * 計算總頁數:pageAll($dataCount,?$pageShow) * 根據傳入的分頁要求,計算后給出limit開始位置:?pageStart($dataCount,?$pageShow,?$page) * 使用方法:由于兩個方法均使用靜態方法定義,因而可以通過直接調用使用。 ``` ??//?計算總頁數: $totalPage?=?\\app\\common\\library\\PageCalculator::pageAll($dataCount,?$pageShow); //?獲取頁碼開始位置: $limitStart?=?\\app\\common\\library\\PageCalculator::pageStart($dataCount,?$pageShow,?$page); //?具體參數說明請直接參考代碼注釋。 ```
                  <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>

                              哎呀哎呀视频在线观看