yii2實戰教程之新手入門指南-簡單博客管理系統

来源:http://www.cnblogs.com/wwolf/archive/2016/06/12/5576514.html
-Advertisement-
Play Games

1、簡介 快速入門指南會對Yii2框架做一個基本介紹,包括資料庫遷移、gii操作、AR模型、路由、驗證、視圖等等。如果你是個Yii2新手甚至之前對PHP框架也很陌生,那麼這裡將會成為你的良好起點。如果你已經使用並且掌握了Yii2框架基礎,可以期待Yii2高級篇教程(後面我會更新)。 為了演示Yii2 ...


1、簡介

快速入門指南會對Yii2框架做一個基本介紹,包括資料庫遷移、gii操作、AR模型、路由、驗證、視圖等等。如果你是個Yii2新手甚至之前對PHP框架也很陌生,那麼這裡將會成為你的良好起點。如果你已經使用並且掌握了Yii2框架基礎,可以期待Yii2高級篇教程(後面我會更新)。

為了演示Yii2特性的基本使用,我將會帶領大家構建一個簡單的博客管理系統。

本教程完整的代碼後期會公開於github上。

2、安裝

我們前面寫過關於Yii2完整版的安裝教程,你可以點擊進行參考,這裡只做步驟,不再做必要的講解。

composer global require "fxp/composer-asset-plugin:~1.1.1"
composer create-project yiisoft/yii2-app-advanced advanced 2.0.8
cd advanced
php init
#之後構建本地環境,我們配置advanced.dev指向frontend/web目錄

3、準備好資料庫

在開發和維護一個資料庫驅動的應用程式時,資料庫的結構會隨代碼的改變而改變。例如,在開發應用程式的過程中,會增加一張新表且必須得加進來; 在應用程式被部署到生產環境後,需要建立一個索引來提高查詢的性能等等。 因為一個資料庫結構發生改變的時候源代碼也經常會需要做出改變,Yii 提供了一個 資料庫遷移 功能,該功能可以記錄資料庫的變化, 以便使資料庫和源代碼一起受版本控制。

在本例中,我們使用yii migrate命令生成博客 blog 對應的數據表遷移:

yii migrate/create create_blog_table

該命令生成的遷移文件位於 advanced\console\migrations 目錄,可能你已經註意到了,yii migrate 命令已經在遷移文件中為我們添加了主鍵ID和表名,接下來我們要編輯該文件修改表名以及添加更多的列到數據表blog:

<?php

use yii\db\Migration;

/**
 * Handles the creation for table `blog_table`.
 */
class m160525_153315_create_blog_table extends Migration
{
    /**
     * @inheritdoc
     */
    public function up()
    {
        $this->createTable('blog', [
            'id' => $this->primaryKey(),
            'title' => $this->string(100)->notNull()->defaultValue(''),
            'content' => $this->text(),
            'create_time' => $this->datetime(),
        ]);
    }

    /**
     * @inheritdoc
     */
    public function down()
    {
        $this->dropTable('blog');
    }
}

運行遷移之前,我們先把資料庫配置一番,打開common\config\main-local.php文件,我們看到components下麵的db配置,參考如下配置就好

'components' => [
    'db' => [
        'class' => 'yii\db\Connection',
        // 修改host 和dbname 之前需要手動創建了dbname才可以
        'dsn' => 'mysql:host=localhost;dbname=advanced',
        //登錄資料庫的賬號
        'username' => 'root',
        //登錄資料庫的密碼
        'password' => '',
        'charset' => 'utf8',
    ],
    // other code
],

資料庫配置好了之後,運行執行如下命令運行migrate

./yii migrate

期間會讓我們確認,yes後回車即可,該命令會為我們創建遷移文件(console\migrations目錄)中定義的所有數據表,執行完該命令打開資料庫會發現,我們的blog表已經創建了,其中包含了在遷移中定義的列。

4、使用gii生成AR模型和CRUD

gii是yii2中的一個模塊,是一種高度可定製和可擴展的代碼生成工具。使用它可以大幅提高我們的開發效率,後面我會也會講解如何用gii定製我們需要的模版以及程式代碼。如果你在安裝的過程中,像我們一樣選擇的是開發環境,gii預設是開啟的。也就是說我們無需再進行配置便可以使用。你也可以打開文件 advanced\frontend\config\main-local.php查看配置代碼。

if (!YII_ENV_TEST) {
    // other code
    $config['bootstrap'][] = 'gii';
    $config['modules']['gii'] = [
        'class' => 'yii\gii\Module',
    ];
}

接著通過地址 http://advanced.dev/index.php?r=gii 訪問gii模塊(在一開始我們配置了advanced.dev指向了frontend/web目錄),藉助其特性幫助我們生成此次操作所必需的一系列代碼。

4.1生成AR模型類

模型是MVC設計模式中的一部分,使用模型不僅能讓我們存取數據變得相對簡單和方便,更多地協助我們處理複雜的業務和邏輯。關於更多的有關模型的描述,可以參考相關手冊或文檔,有任何問題你也可以下方留言。

我們回過頭來點擊gii頁面上的Model Generator start,像下麵這樣生成AR模型類。

4.2生成CRUD代碼

所謂的CRUD無非就是Create Read Update Delete,也就是創建、讀取、更新和刪除。包含了常見Web開發的基本操作。如果你剛剛用gii生成了Model,此時點擊左側菜單CRUD Generator像下麵這樣生成crud再好不過了。

關於更多gii的操作你可以參考yii2 gii的詳細操作步驟

目前為止,我們藉助gii生成了model,curd一系列操作。

有好提示:實際開發中,後臺管理理應利用gii協助開發,可快速提高開發效果。

按照以上操作,我們會在如下相關目錄生成9個文件

common\models\Blog.php
common\models\BlogSearch.php
frontend\controllers\BlogController.php
frontend\views\blog\_form.php
frontend\views\blog\_search.php
frontend\views\blog\create.php
frontend\views\blog\index.php
frontend\views\blog\update.php
frontend\views\blog\view.php

接著可以通過路由訪問http://advanced.dev/index.php?r=blog看到blog具體頁面信息。

5、添加博客

5.1添加前準備

[考慮目前國內網站大部分採集文章十分頻繁,更有甚者不註明原文出處,原作者更希望看客們查看原文,以防有任何問題不能更新所有文章,避免誤導!]

繼續閱讀


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • OO思想現在已經在軟體開發項目中廣泛應用,其中最重要的一個特性就是繼承,最近偶簡單的複習了下在C#中涉及到繼承這個特性時,所需要用到的關鍵字,其中有一些關鍵點,特地整理出來,方便大家查閱。 一、在C#中,new這個關鍵字使用頻率非常高,主要有3個功能: a) 作為運算符用來創建一個對象和調用構造函數 ...
  • 本次知識點:Linux系統的多終端切換,linux下的用戶,linux遠程訪問工具使用,linux下重要的目錄,命令的組成,通配符,linux的路徑問題,文件操作的綜合運用 為什麼學習linux? 1.很多人都說.net程式員只會在Windows的環境下進行工作,壓根就不懂Linux的使用,也不懂L ...
  • 厚積薄發 這個詞是高三英語老師在高考前寫在黑板上,高中三年努力這麼久,是時候迎面而上,衝刺向前。所以,一想到.NET 2016,腦海裡蹦出的第一個詞就是它。 .NET 2016 是 .NET 一次質的飛躍,不管難易,我們需要擁抱變化。 初識 .NET 2016 .NET 2016 概覽 .NET 2 ...
  • 筆者的開發環境如下: Windows8.1+Apache+PhpStorm+XDebug+Firefox(XDebug helper 1.4.3插件)。 一、XDebug安裝配置 (1)下載XDebug 下載地址:http://www.xdebug.org/ 必須下載跟機器上安裝的php匹配的版本才 ...
  • 運行環境: PHPSTORM版本 : 8.0.1 PHP版本 : 5.6.2 xdebug版本:php_xdebug-2.2.5-5.6-vc11-x86_64.dll ps : php版本和xdebug版本一定要相對應 1. PHP安裝xdebug擴展 php.ini的配置,下麵的配置僅供參考,路 ...
  • 由於換電腦或重裝系統後常需要重新搭建PHP環境,此次簡單記錄一下Windows下搭建PHP環境的過程,具體步驟可以參照網上資料 準備工作: Windows下手工搭建PHP環境需要先下載相應的軟體,此次下載的軟體版本如下圖所示: 安裝過程: 一、安裝Apache 雙擊安裝,與安裝其他Windows軟體 ...
  • 具體來說 cookie 是保存在“客戶端”的,而session是保存在“服務端”的 cookie 是通過擴展http協議實現的 cookie 主要包括 :名字,值,過期時間,路徑和域; 如果cookie不設置生命周期,則以瀏覽器關閉而關閉,這種cookie一般存儲在記憶體而不是硬碟上.若設置了生命周期 ...
  • 首先,將PHP項目的PHP版本設置為PHP 7.0。 PHP 7其中一項新特性是返回類型聲明,即PHP的函數和方法可以聲明指定類型的返回值: PHP 7的另一項精彩的改進就是參數的標量類型聲明,Netbeans的代碼自動完成功能提供了這些新類型支持。 NetBeans也支持PHP 7新出現的操作符: ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...