ホームページ  >  記事  >  PHPフレームワーク  >  Yii フレームワークを使用してニュース Web サイトを作成する

Yii フレームワークを使用してニュース Web サイトを作成する

PHPz
PHPzオリジナル
2023-06-21 08:40:481151ブラウズ

オンライン メディアの人気に伴い、ニュース Web サイトの需要も高まっています。ニュース Web サイトを作成する予定がある場合は、Yii フレームワークを使用して Web サイトを構築することを検討してください。 Yii は、Web アプリケーション開発をよりシンプルかつ効率的に行うために設計された人気の PHP フレームワークです。

Yii フレームワークには、次のような多くの利点があります。

  1. 効率的なパフォーマンス

Yii フレームワークは、大量の同時リクエストを処理できる高速なフレームワークです。 。これは、Yii フレームワークが最新の PHP テクノロジーの一部を採用し、Web サイトのパフォーマンスを向上させるためにさまざまなキャッシュ メカニズムを使用しているためです。この機能は、トラフィックが多い状況に対処できる必要があるため、ニュース Web サイトにとって非常に重要です。

  1. 柔軟で拡張が簡単

Yii フレームワークは非常に柔軟で、簡単に拡張およびカスタマイズできます。新しい機能を追加したり、既存の機能を変更したりする必要がある場合、Yii フレームワークは非常に明確な拡張インターフェイスとクラス ライブラリを提供します。これは、新しいモジュールやプラグインを簡単に作成して Web サイトに統合できることを意味します。

  1. 高セキュリティ

Yii フレームワークはセキュリティを設計原則として採用し、一連のセキュリティ保護メカニズムを提供します。これらのメカニズムには、入力フィルタリング、データ暗号化、認証、認可機能が含まれます。これらのメカニズムは、ニュース Web サイトがハッカーやその他のセキュリティの脅威に対して脆弱でないことを保証するために必要です。

ここで、Yii フレームワークを使用してニュース Web サイトを作成する方法を見てみましょう。

最初のステップは Yii フレームワークをインストールすることです

始める前に、Yii フレームワークをインストールする必要があります。 Yii フレームワークをインストールするには、Composer または手動ダウンロードの 2 つの方法があります。ここでは、Composer のインストール方法を選択します。 Composer をまだインストールしていない場合は、まず Composer をインストールし、システム パスに追加してください。

ターミナルで、プロジェクト ディレクトリに移動し、次のコマンドを実行して Yii フレームワークをインストールします:

composer require yiisoft/yii2-app-basic

このコマンドは、Yii Basic アプリケーション テンプレートと Yii コア ライブラリをインストールします。インストールが完了したら、次のコマンドを実行して Yii アプリケーションを実行できます:

./yii serve

このコマンドはローカル Web サーバーを起動し、Yii アプリケーションを実行します。ブラウザで http://localhost:8080 を開いて Web サイトのホームページを表示できます。

第 2 ステップ、ニュース Web サイトのデータベースを設計する

Web アプリケーションを作成する前に、データベースを設計する必要があります。ニュース Web サイトに次のデータベース テーブルが必要であるとします。

  • news: ニュースのタイトル、内容、日付、作成者を格納します。
  • category: ニュースの分類情報を格納します
  • user: ニュース Web サイトのユーザー情報を保存します

Yii フレームワークでは、移行ツールを使用してデータベースを作成、更新、管理できます。次のコマンドを使用して、新しい移行を作成できます:

./yii migrate/create create_news_table

このコマンドは、create_news_table という名前の移行クラスを作成します。これは、news テーブルの作成に使用されます。およびその他の関連テーブル (category テーブルや user テーブルなど)。

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 メソッドを使用して ## を作成します。 #newsTable で、addForeignKey メソッドを使用して外部キー制約を定義し、データの一貫性を確保します。

Migration クラスを使用すると、次のコマンドを使用して Migration を実行し、新しいデータベース テーブルを作成できます。

./yii migrate/up

このコマンドは、新しいデータベース テーブルとその他の関連テーブルを作成します。

3 番目のステップは 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 テーブルに追加されます。

4 番目のステップは、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']);
    }
}

このコードでは、5 つの操作を定義します:

IndexView Update、および Delete を作成します。これにより、ビュー ファイルがユーザーに提示され、ユーザーのリクエストに基づいて応答が返されます。

これらの操作用のビュー ファイルを作成するには、たとえば次のようにします。
  • 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 フレームワークを使用してニュース Web サイトを作成するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。