99re热这里只有精品视频,7777色鬼xxxx欧美色妇,国产成人精品一区二三区在线观看,内射爽无广熟女亚洲,精品人妻av一区二区三区

CodeIgniter4 創(chuàng)建新聞項目

2020-08-18 09:43 更新

你現(xiàn)在知道如何使用CodeIgniter從數(shù)據(jù)庫讀取數(shù)據(jù),但你尚未向數(shù)據(jù)庫寫入任何信息。在本節(jié)中,你將擴展之前創(chuàng)建新的控制器和模型以包含此功能。

創(chuàng)建表格

要將數(shù)據(jù)輸入數(shù)據(jù)庫,你需要創(chuàng)建一個表格,你可以在其中輸入要存儲的信息。這意味著你將需要一個包含兩個字段的表格,一個用于標題,另一個用于文本。你將從模型中的標題中獲得slug。在application / Views / news / create.php創(chuàng)建新視圖

  <h2><?= esc($title); ?></h2>


  <?= \Config\Services::validation()->listErrors(); ?>


  <?= form_open('news/create'); ?>


      <label for="title">Title</label>
      <input type="input" name="title" /><br />


      <label for="text">Text</label>
      <textarea name="text"></textarea><br />


      <input type="submit" name="submit" value="Create news item" />


  </form>

這里只有兩個函數(shù)你可能不熟悉:form_open()函數(shù)和ConfigServices::validation()->listErrors()函數(shù)。 第一個函數(shù)由form helper提供,并呈現(xiàn)表格元素并添加額外的功能,例如添加一個隱藏的CSRF prevention field。后者用于報告與表格驗證相關的錯誤。

回到你的新聞控制器。你將在此處執(zhí)行兩項操作,檢查表格是否已提交以及提交的數(shù)據(jù)是否通過了驗證規(guī)則。你將使用form validation庫來執(zhí)行此操作。

  public function create()
  {
      helper('form');
      $model = new NewsModel();


      if (! $this->validate($this->request, [
          'title' => 'required|min[3]|max[255]',
          'text'  => 'required'
      ]))
      {
          echo view('templates/header', ['title' => 'Create a news item']);
          echo view('news/create');
          echo view('templates/footer');


      }
      else
      {
          $model->save([
              'title' => $this->request->getVar('title'),
              'slug'  => url_title($this->request->getVar('title')),
              'text'  => $this->request->getVar('text'),
          ]);
          echo view('news/success');
      }
  }

上面的代碼添加了很多功能。前幾行加載表格helper和NewsModel。之后,Controller提供的輔助函數(shù)用于驗證$_POST字段。在這種情況下,標題和文本字段是必需的。

接下來,你可以看到檢查表格驗證是否成功運行的條件。如果沒有,則顯示表格,如果提交并傳遞了所有規(guī)則,則調用模型。這將負責將新聞項傳遞到模型中。這包含一個新函數(shù)url_title()。這個函數(shù)由URL helper提供, 它將你傳遞的字符串剝離出來,用短劃線(-)替換所有空格,并確保所有內容都是小寫字符。這給你留下了一個漂亮的slug,非常適合創(chuàng)建URI。

在此之后,加載視圖以顯示成功消息。在application/Views/news/success.php創(chuàng)建一個視圖 并寫一條成功消息。

模型

最適合剩下的就是確保你的模型設置為允許正確保存數(shù)據(jù)。使用的save()方法將根據(jù)主鍵的存在來確定是否應插入信息,或者行是否已存在且應更新。在這種情況下,沒有id傳遞給它的字段,所以它會在它的表中插入一個新行,即news。

但是,默認情況下,模型中的插入和更新方法實際上不會保存任何數(shù)據(jù),因為它不知道哪些字段可以安全更新。編輯模型以在$allowedFields屬性中為其提供可更新字段的列表。

  <?php
  class NewsModel extends \CodeIgniter\Model
  {
      protected $table = 'news';


      protected $allowedFields = ['title', 'slug', 'text'];
  }

此新屬性現(xiàn)在包含我們允許保存到數(shù)據(jù)庫的字段。請注意,我們遺漏了id?那是因為你幾乎不需要這樣做,因為它是數(shù)據(jù)庫中的自動遞增字段。這有助于防止批量分配漏洞。如果你的模型正在處理你的時間戳,你也可以將其保留。

路由

在開始將新聞項添加到CodeIgniter應用程序之前,必須向Config/Routes.php文件添加額外的規(guī)則。確保你的文件包含以下內容。這可以確保CodeIgniter將’create’視為一種方法,而不是新聞項目的slug。

  $routes->post('news/create', 'News::create');
  $routes->add('news/(:segment)', 'News::view/$1');
  $routes->get('news', 'News::index');
  $routes->add('(:any)', 'Pages::view/$1');

現(xiàn)在將瀏覽器指向安裝CodeIgniter的本地開發(fā)環(huán)境,并將index.php/news/create添加到URL。恭喜,你剛剛創(chuàng)建了第一個CodeIgniter應用程序!添加一些新聞并查看你制作的不同頁面。

以上內容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號