首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 綜合知識

基於 CodeIgniter 的簡易文章發布系統實作

     編輯:PHP 綜合知識

專案結構

  • 資料表:yi_article(id, title, content, add_man, add_time, views, tag)
  • Controller:Article.php 含列表、分頁、新增、修改、刪除、驗證完整 CRUD。
  • View:article_add.php、article_mod.php 表單頁面。

Controller 關鍵功能解析

1. 表單驗證規則集中管理

$this->tips = array(
    'required' => ' [%s] 是必須填寫的!',
    'is_unique' => '此 [%s] 已經存在,請輸入其它名稱!',
    'min_length' => ' [%s] 最小長度為 [%s]',
    'max_length' => ' [%s] 最大長度為 [%s]'
);
$this->form_validation->set_message($this->tips);

統一中文化錯誤訊息,維護方便。

2. 分頁類庫封裝

$config['total_rows'] = $this->db->count_all_results();
$config['per_page'] = 5;
$config['base_url'] = site_url('article/article_page');
$config['use_page_numbers'] = TRUE; // URL 使用頁碼而非 offset
$this->pagination->initialize($config);

支援首頁、尾頁、上下頁、數字連結完整樣式。

3. 新增與修改共用驗證邏輯

  • 新增:is_unique[article.title] 防重複標題。
  • 修改:移除 is_unique,改用 callback_abc 示範自訂回調驗證。

4. 刪除支援批次 ID

$id = array(17, 18, 19);
$this->db->where_in('id', $id)->delete('article');

View 表單關鍵點

  • 使用 site_url() 產生表單 action,確保路徑正確。
  • 修改頁面用 <input type="hidden" name="id" value="..."> 傳遞主鍵。
  • Radio 按鈕用 if($tag==1) echo 'checked' 回填狀態。

改進建議(CodeIgniter 3/4 現代化)

  1. 模型層分離:將 DB 操作移至 Article_model,Controller 僅處理請求/回應。
  2. 實體類別:定義 ArticleEntity 對應資料表欄位,提供型別提示與存取器。
  3. 驗證服務:CI4 內建 Validation 服務,支援規則群組、自訂規則類別。
  4. CSRF 保護:開啟 $config['csrf_protection'] = TRUE,表單加入 。
  5. 分頁視圖客製化:使用 pagination_template 定義 Bootstrap/ Tailwind 風格。
  6. 軟刪除:加 deleted_at 欄位,刪除改為更新時間戳,保留資料可恢復。

結語

此範例展示了 CodeIgniter 早期版本「胖 Controller、薄 Model」的典型寫法。雖然功能完整,但缺乏分層與安全防護。遷移至 CI3/4 時,請依照上述建議重構,引入 Repository 模式、服務層、實體類別,打造可維護、可測試的現代化應用架構。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved