首頁 php框架 YII 使用Yii框架建立新聞網站

使用Yii框架建立新聞網站

Jun 21, 2023 am 08:40 AM
創建 yii框架 新聞網站

隨著網路媒體的普及,新聞網站的需求也日益增長。如果你打算創建一個新聞網站,可以考慮使用Yii框架來建立你的網站。 Yii是一種流行的PHP框架,它的設計目的是使Web應用程式的開發更加簡單和高效。

Yii框架具有許多優點,其中包括:

  1. 高效率的效能

Yii框架是一種快速的框架,它能夠處理大量的並發請求。這是因為Yii框架採用了一些最新的PHP技術,並且使用了多種快取機制來提高網站效能。這個特性對於新聞網站來說非常重要,因為它需要能夠應對高流量的情況。

  1. 靈活且易於擴展

Yii框架非常靈活,能夠輕鬆地擴展和自訂。如果你需要增加新的功能或修改現有的功能,Yii框架提供了非常清晰的擴充介面和類別庫。這意味著你可以輕鬆地編寫新的模組或插件,並將它們整合到你的網站中。

  1. 安全性高

Yii框架以安全性為設計原則,提供了一系列的安全防護機制。這些機制包括輸入過濾、資料加密、驗證和授權等功能。這些機制是必要的,以確保你的新聞網站不會受到駭客攻擊或其他的安全威脅。

現在,我們來看看如何使用Yii框架建立一個新聞網站。

第一步,安裝Yii框架

在開始之前,你需要安裝Yii框架。 Yii框架有兩種安裝方式:透過Composer或手動下載。在這裡,我選擇Composer安裝方式。如果你還沒有安裝Composer,請先安裝Composer並將其加入你的系統路徑。

在終端機中,進入你的專案目錄,執行以下指令安裝Yii框架:

composer require yiisoft/yii2-app-basic
登入後複製

這個指令將安裝Yii Basic應用程式範本和Yii核心函式庫。安裝完成後,你可以執行以下命令運行Yii應用程式:

./yii serve
登入後複製
登入後複製

這個命令將開啟一個本機Web伺服器並執行你的Yii應用程式。你可以在瀏覽器中開啟http://localhost:8080,查看你的網站首頁。

第二步,設計你的新聞網站資料庫

在創建任何網路應用程式之前,你需要設計你的資料庫。假設我們的新聞網站需要以下資料庫表格:

  • news: 儲存新聞的標題、內容、日期和作者等資訊
  • category: 儲存新聞的分類資訊
  • user: 儲存新聞網站的使用者資訊

在Yii框架中,你可以使用Migrations工具來建立、更新和管理你的資料庫。你可以使用以下指令建立一個新的Migration:

./yii migrate/create create_news_table
登入後複製

這個指令將會建立一個名為create_news_table的Migration類,這個類別將會用來建立news#表格和其它相關的表格(例如,categoryuser表格)。

create_news_table類別中,你需要使用Yii框架的資料庫API來建立你的資料庫表。例如,以下是建立news表格的範例程式碼:

<?php

use yiidbMigration;

class m210816_100000_create_news_table extends Migration
{
    public function safeUp()
    {
        $this->createTable('news', [
            'id' => $this->primaryKey(),
            'title' => $this->string()->notNull(),
            'content' => $this->text(),
            'category_id' => $this->integer(),
            'user_id' => $this->integer(),
            'created_at' => $this->timestamp()->defaultExpression('CURRENT_TIMESTAMP'),
        ]);

        $this->addForeignKey('fk_news_category', 'news', 'category_id', 'category', 'id', 'CASCADE', 'CASCADE');
        $this->addForeignKey('fk_news_user', 'news', 'user_id', 'user', 'id', 'CASCADE', 'CASCADE');
    }

    public function safeDown()
    {
        $this->dropForeignKey('fk_news_category', 'news');
        $this->dropForeignKey('fk_news_user', 'news');

        $this->dropTable('news');
    }
}
登入後複製

在這個程式碼中,我們使用Yii框架的createTable方法來建立news表格,接著以addForeignKey方法定義外鍵約束,保證了資料的一致性。

有了Migration類,你可以使用如下指令執行Migration,來建立新的資料庫表格:

./yii migrate/up
登入後複製

這個指令將會建立新的資料庫表格和它相關的表格。

第三步,建立Yii模型

在Yii框架中,模型是用來表示業務邏輯和資料的核心部分,也是MVC架構模式中的一部分。在Yii框架中,模型是用來處理資料的最簡單、最有力的方式。

要建立一個模型,你可以使用以下指令:

./yii generate/model News --tableName=news
登入後複製

這個指令將會建立一個名為News的模型,並關聯到news表格。接著,你需要使用以下程式碼自訂你的模型:

<?php

namespace appmodels;

use Yii;

class News extends yiidbActiveRecord
{
    public static function tableName()
    {
        return 'news';
    }

    public function rules()
    {
        return [
            [['title'], 'required'],
            [['content'], 'string'],
            [['category_id', 'user_id'], 'integer'],
            [['created_at'], 'safe'],
            [['title'], 'string', 'max' => 255],
        ];
    }

    public function attributeLabels()
    {
        return [
            'id' => 'ID',
            'title' => 'Title',
            'content' => 'Content',
            'category_id' => 'Category ID',
            'user_id' => 'User ID',
            'created_at' => 'Created At',
        ];
    }
}
登入後複製

在這個程式碼中,我們定義了News模型的表格名稱和驗證規則,也定義了每個屬性的標籤(用於顯示給使用者的文字)。你可以透過這個模型存取和修改資料表,例如:

$news = new News();
$news->title = 'Hello, World!';
$news->content = 'Welcome to my news website.';
$news->category_id = 1;
$news->user_id = 1;
$news->save();
登入後複製

這將在news表格中加入一則新聞。

第四步,建立Yii控制器和視圖

在Yii框架中,控制器是用來處理使用者要求並呈現回應的部分。控制器可將使用者請求路由到正確的操作,並使用特定的視圖檔案來呈現回應。

要建立一個控制器,你可以使用以下指令:

./yii generate/controller News
登入後複製

這將會建立一個名為NewsController的控制器。接著,你需要在控制器中加入一些操作,例如:

<?php

namespace appcontrollers;

use Yii;
use appmodelsNews;
use yiiwebController;

class NewsController extends Controller
{
    public function actionIndex()
    {
        $news = News::find()->all();
        return $this->render('index', [
            'news' => $news,
        ]);
    }

    public function actionView($id)
    {
        $news = News::findOne($id);
        return $this->render('view', [
            'news' => $news,
        ]);
    }

    public function actionCreate()
    {
        $news = new News();
        if ($news->load(Yii::$app->request->post()) && $news->save()) {
            return $this->redirect(['view', 'id' => $news->id]);
        }
        return $this->render('create', [
            'news' => $news,
        ]);
    }

    public function actionUpdate($id)
    {
        $news = News::findOne($id);
        if ($news->load(Yii::$app->request->post()) && $news->save()) {
            return $this->redirect(['view', 'id' => $news->id]);
        }
        return $this->render('update', [
            'news' => $news,
        ]);
    }

    public function actionDelete($id)
    {
        $news = News::findOne($id);
        $news->delete();
        return $this->redirect(['index']);
    }
}
登入後複製

在這個程式碼中,我們定義了五個操作:IndexViewCreateUpdateDelete。這將視圖文件呈現給用戶,並根據用戶的請求回傳回應。

為了建立這些操作的視圖文件,例如:

  • app/views/news/index.php
  • app/views/news/view.php
  • app/views/news/create.php
  • app/views/news/update.php

你需要添加如下代码:

<?php foreach ($news as $item): ?>
    <div>
        <h2><?= $item->title ?></h2>
        <p><?= $item->content ?></p>
        <p><?= $item->created_at ?></p>
        <p>Author: <?= $item->user_id ?></p>
        <p>Category: <?= $item->category_id ?></p>
        <a href="<?= Yii::$app->urlManager->createUrl(['news/view', 'id' => $item->id]) ?>">View</a>
        <a href="<?= Yii::$app->urlManager->createUrl(['news/update', 'id' => $item->id]) ?>">Update</a>
        <a href="<?= Yii::$app->urlManager->createUrl(['news/delete', 'id' => $item->id]) ?>">Delete</a>
    </div>
<?php endforeach; ?>
登入後複製

在这个代码中,我们用循环遍历新闻,然后为每个新闻输出标题、内容、日期、作者和分类,以及三个按钮View、Update和Delete。

第五步,定义Yii路由和URL规则

在Yii框架中,路由和URL规则告诉Yii框架如何将用户请求路由到正确的控制器和操作。

默认情况下,Yii框架使用/controller/action格式的URL,例如/news/index。但是你可以自定义路由和URL规则,例如将/news路由到NewsControllerIndex操作。

要定义路由和URL规则,你可以使用如下代码:

'urlManager' => [
    'enablePrettyUrl' => true,
    'enableStrictParsing' => true,
    'showScriptName' => false,
    'rules' => [
        // NewsController
        ['class' => 'yiiestUrlRule', 'controller' => 'news'],
        'news' => 'news/index',
        'news/create' => 'news/create',
        'news/<id:d+>' => 'news/view',
        'news/<id:d+>/update' => 'news/update',
        'news/<id:d+>/delete' => 'news/delete',
    ],
],
登入後複製

在这个代码中,我们使用规则数组来自定义路由和URL规则。例如,我们将news路由到NewsControllerIndex操作,而将news/create路由到NewsControllerCreate操作。

第六步,测试Yii应用程序

现在,你已经创建了一个新闻网站,并使用Yii框架构建了它。要测试你的新闻网站,你可以在终端中运行如下命令启动本地Web服务器:

./yii serve
登入後複製
登入後複製

然后在浏览器中打开http://localhost:8080,查看你的新闻网站。

最后,当你为你的新闻网站添加更多功能时,你可以根据你的业务需要扩展Yii框架的功能。Yii框架提供了许多工具和类库,可以帮助你尽可能快地开发出高效、安全和易于扩展的Web应用程序。

以上是使用Yii框架建立新聞網站的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

如何在最新的 iOS 17 上個性化你的 iPhone 電話 如何在最新的 iOS 17 上個性化你的 iPhone 電話 Sep 21, 2023 am 08:17 AM

如何在iPhone上個人化電話Apple的iOS17引入了一項名為「聯絡人海報」的新功能,可讓您在iPhone上個性化呼叫螢幕的外觀。此功能可讓您使用所選的照片、顏色、字體和擬我表情作為聯絡人卡片設計海報。因此,當您進行通話時,您的自訂影像將完全按照您的設想顯示在收件人的iPhone上。您可以選擇與所有保存的聯絡人分享您唯一的聯絡人海報,也可以選擇可以看到它的人。同樣,在通話交流期間,您還將看到其他人的聯絡人海報。此外,Apple允許您為單一聯絡人設定特定的聯絡人照片,使來自這些聯絡人的呼叫與

如何在真我手機上建立資料夾? 如何在真我手機上建立資料夾? Mar 23, 2024 pm 02:30 PM

標題:真我手機新手指南:如何在真我手機上建立資料夾?在現今社會,手機已成為人們生活中不可或缺的工具。而真我手機作為一款備受歡迎的智慧型手機品牌,其簡潔、實用的作業系統備受用戶喜愛。在使用真實我手機的過程中,很多人可能會遇到需要整理手機中的檔案和應用程式的情況,而建立資料夾就是一種有效的方式。本文將介紹如何在真我手機上建立資料夾,幫助使用者更好地管理自己的手機內容。第

如何在GIMP中創造像素藝術 如何在GIMP中創造像素藝術 Feb 19, 2024 pm 03:24 PM

本文將引起您的興趣,如果您有意在Windows上使用GIMP進行像素藝術創作。 GIMP是一款著名的圖形編輯軟體,不僅免費開源,還能幫助使用者輕鬆創造美麗的圖像和設計。除了適用於初學者和專業設計師外,GIMP也可以用於製作像素藝術,這種數位藝術形式是利用像素作為唯一構建塊來進行繪製和創作的。如何在GIMP中建立像素藝術以下是在WindowsPC上使用GIMP建立像素圖片的主要步驟:下載並安裝GIMP,然後啟動應用程式。創造一個新的形象。調整寬度和高度的大小。選擇鉛筆工具。將筆刷類型設定為像素。設定

格力+如何創造家庭 格力+如何創造家庭 Mar 01, 2024 pm 12:40 PM

很多朋友表示想知道在格力+軟體裡該怎麼去創建家庭,下面為大家帶來了操作方法,想要了解的朋友和我一起來看看吧。首先,開啟手機上的格力+軟體,並登入。接著,在頁面底部的選項列中,點選最右邊的「我的」選項,即可進入個人帳戶頁面。 2.來到我的頁面後,在“家庭”下方的選項裡有一個“創建家庭”,找到後在它的上面點擊進入。 3.接下來跳到建立家庭的頁面裡,根據提示在輸入框裡輸入要設定的家庭名稱,輸入好後在右上角點選「儲存」按鈕。 4.最後在頁面下方會彈出一個「儲存成功」的提示,代表家庭已經成功創建好了。

如何使用Highcharts建立甘特圖表 如何使用Highcharts建立甘特圖表 Dec 17, 2023 pm 07:23 PM

如何使用Highcharts建立甘特圖表,需要具體程式碼範例引言:甘特圖是一種常用於展示專案進度和時間管理的圖表形式,能夠直觀地展示任務的開始時間、結束時間和進度。 Highcharts是一款功能強大的JavaScript圖表庫,提供了豐富的圖表類型和靈活的配置選項。本文將介紹如何使用Highcharts建立甘特圖表,並給出具體的程式碼範例。一、Highchart

如何創建您的 iPhone 聯絡人海報 如何創建您的 iPhone 聯絡人海報 Mar 02, 2024 am 11:30 AM

在iOS17中,Apple為其常用的「電話」和「通訊錄」應用程式新增了聯絡人海報功能。這項功能允許用戶為每個聯絡人設置個人化的海報,使通訊錄更具視覺化和個人化。聯絡人海報可以幫助用戶更快速地識別和定位特定聯絡人,提高了用戶體驗。透過這項功能,使用者可以根據自己的喜好和需求,為每個聯絡人添加特定的圖片或標識,使通訊錄介面更加生動iOS17中的Apple為iPhone用戶提供了一種新穎的方式來表達自己,並添加了可個性化的聯繫海報。聯絡人海報功能可讓您在呼叫其他iPhone用戶時展示獨特的個人化內容。您

如何使用PHP建立驗證碼圖片? 如何使用PHP建立驗證碼圖片? Sep 13, 2023 am 11:40 AM

如何使用PHP建立驗證碼圖片?驗證碼(CAPTCHA)是一種常用的驗證使用者是否為人而非機器的方法。在網站上,我們經常會看到驗證碼圖片,要求使用者輸入圖片上顯示的隨機字元或數字,以完成登入、註冊、評論等操作。本文將介紹如何使用PHP建立驗證碼圖片,並提供具體的程式碼範例。一、PHPGD庫要建立驗證碼圖片,我們需要使用PHP的GD庫。 GD庫是用來處理影像的擴

Django初探:用命令列創建你的首個Django項目 Django初探:用命令列創建你的首個Django項目 Feb 19, 2024 am 09:56 AM

Django專案開啟之旅:從命令列開始,創建你的第一個Django專案Django是一個強大且靈活的網路應用框架,它以Python為基礎,提供了許多開發Web應用所需的工具和功能。本文將帶領你從命令列開始,創建你的第一個Django專案。在開始之前,請確保你已經安裝了Python和Django。步驟一:建立專案目錄首先,開啟命令列窗口,並建立新的目錄

See all articles