<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>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                # 留言插件的開發 > 通過前幾節對插件以及創建擴展的學習,已經對插件有了基本的認識,在這里咱就來開發一個`在線留言`插件。 ## 插件功能 ### 1\. 在博文詳情頁添加上在線留言功能 ### 2\. 留言給博文對應有作者 ### 3\. 個人博客后臺可以查看自己的博客留言信息 本插件不但需要在前臺進行展示,同時博文作者可以通過個人博客后臺查看留言 ## 知識點 ### 1\. 留言表的創建(sql創建) ### 2\. 插件中靜態資源文件的引入方式 ## 第一部分:創建留言插件 > 按照前幾節課制定的插件開發規范,創建留言插件`message`,由于在個人博客后臺需要添加查看留言的菜單項,所以在插件基本信息中,直接加上菜單項的配置。另外,需要在鉤子方法設置留言表單的模板。 ## 第二部分:數據表的創建 > 在創建留言表時,需要在安裝插件時直接創建,所以需要使用建表語句來創建。 > 留言表-建表語句(根據需要自行調整) ~~~ CREATE TABLE `td_message` ( `id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT, `name` VARCHAR(50) NOT NULL DEFAULT '0' COMMENT '姓名', `phone` VARCHAR(11) NOT NULL DEFAULT '0' COMMENT '手機號', `content` VARCHAR(200) NOT NULL DEFAULT '0' COMMENT '留言內容', `create_time` INT(10) NOT NULL DEFAULT '0', `update_time` INT(10) NOT NULL DEFAULT '0', `touid` INT(10) NOT NULL DEFAULT '0' COMMENT '留言對象', PRIMARY KEY (`id`) ) COMMENT='留言表' ENGINE=MyISAM ; ~~~ > 在這里要注意,建表語句的存放位置,一般情況下可以放到一個文件里比如,課程中是直接放到了留言插件目錄下的`install.sql`。另外,由于一個插件對于數據庫的操作可能有多個,所以在安裝時需要執行的sql語句并不一定只有一個,也就是install.sql中存放的`sql`語句可能有多個,那么這里就要分開來執行,所以需要對install.sql中的語句進行分解,即把`sql`語句拆分。折分后,再循環執行。 ### 創建數據表的注意事項 #### 1\. install.sql文件中,結尾不要有空行 #### 2\. 在進行拆分`sql`語句時,要進行空數據的過濾 #### 3\. 要進行數據表的存在性判斷 數據表創建代碼片段 ~~~ //創建留言數據表 $sql_content=file_get_contents(ADDON_PATH .'message/install.sql');//獲取sql腳本 $arr_sql=array_filter(explode(";",$sql_content));//對sql進行拆分,并過濾空數據 foreach ($arr_sql as $v){//循環執行sql Db::execute($v); } ~~~ ## 第三部分 創建鉤子模板(留言表單) > 要實現留言功能,首先需要添加留言表單。通過鉤子模板來實現。在這里要注意表單樣式,由于鉤子模板會做為所在頁面的一部分,所以會繼承當前頁面的樣式。具體效果可以自行進行設置。 ## 第四部分 實現留言功能 > 留言表單處理好后,接下來要做的就是將用戶的留言數據通過表單提交到后端處理并寫入數據表(td\_message)。 在這里重點看一下處理表單提交業的數據處理如何實現。在這里插件擴展也遵循TP5的MVC模式。所以對于留言數據的處理,也要通過控制器模型的方式來實現(也可以不使用模型層)。 ### 1\. 在插件目錄下創建控制器目錄`controller`和模型目錄`model` ### 2\. 創建控制器`Index.php`和數據處理的方法`save` > 在這里的控制器名稱和方法名稱可是自定義的。 #### 注意事項 ##### 1\. 控制器的命名空間要注意`addons\message\controller` ##### 2\. 控制器要繼承插件擴展中`think\addons\Controller`并不是`think\Controller` ~~~ <?php namespace addons\message\controller; use think\addons\Controller; use addons\message\model\Message; class Index extends Controller { /** * 在線留言數據處理 */ public function save(){ $data=input('post.'); $result=Message::store($data); if($result){ $this->success("留言成功"); }else{ $this->error("留言失敗"); } } } ~~~ ### 3\. 模型的創建 > 在創建模型時,和TP中的模式的使用方法是完一樣的,也同樣需要繼承Think的Model基類。 > \[danger\]要注意的是和數據表的對應(確認表前輟是否和系統默認配相同)。 ~~~ <?php namespace addons\message\model; use think\Model; class Message extends Model { protected $table = 'td_message'; protected $autoWriteTimestamp = true; public static function store($data){ if(!is_array($data)){ return false; } //獲取博文發布的id $touid=db("blogcate")->where('cid',$data['cid'])->value('uid'); $data['touid']=$touid; $result=self::create($data); if($result){ return true; } return fase; } } ~~~ > 由于要指定留言的對像,所以在留言時需要獲取到博文發布著的用戶id。在這里要注意一點,前臺博文詳情頁中的模板變量,在插件模板中是不能直接使用的。所以在這里需要在調用插件時,通過參數的方式進行傳遞。 所以博文詳情頁中調用留言插件時,如下調用 ~~~ {:hook("messagehook",['cid'=>$article.cid])} ~~~ ## 第五部分 個人博客管理后臺查看留言功能的實現 > 在這里開發MVC的模式和application下的模人開發是一樣的。但是要注意以下幾 。 注意事項: 1. 插件中的 控制器方法的訪問方式不同 2. 模板拆分中的路徑設置問題(相對路徑) 3. 插件和application中共用模板時的路徑設置 4. 做后臺插件時,要注意插件的訪問權限(判斷用戶是否登錄) # 插件中靜態資源文件的處理 > 在很多場景下,插件下是需要靜態資源文件的,如js、css、imgage等。像這些在訪問時,需要在站點根目錄下(public)下才可以訪問。所以在安裝插件時,需要對靜態資源文件進行處理。 > 通常情況下會將`靜態資源文件`移動到public目錄下。具體的規則需要規范化。比如,約定插件的資源文件安裝后,會移入`public\static\addons`目錄下 5.
                  <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>

                              哎呀哎呀视频在线观看