オンライン メディアの人気に伴い、ニュース Web サイトの需要も高まっています。ニュース Web サイトを作成する予定がある場合は、Yii フレームワークを使用して Web サイトを構築することを検討してください。 Yii は、Web アプリケーション開発をよりシンプルかつ効率的に行うために設計された人気の PHP フレームワークです。
Yii フレームワークには、次のような多くの利点があります。
Yii フレームワークは、大量の同時リクエストを処理できる高速なフレームワークです。 。これは、Yii フレームワークが最新の PHP テクノロジーの一部を採用し、Web サイトのパフォーマンスを向上させるためにさまざまなキャッシュ メカニズムを使用しているためです。この機能は、トラフィックが多い状況に対処できる必要があるため、ニュース Web サイトにとって非常に重要です。
Yii フレームワークは非常に柔軟で、簡単に拡張およびカスタマイズできます。新しい機能を追加したり、既存の機能を変更したりする必要がある場合、Yii フレームワークは非常に明確な拡張インターフェイスとクラス ライブラリを提供します。これは、新しいモジュールやプラグインを簡単に作成して Web サイトに統合できることを意味します。
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 サイトに次のデータベース テーブルが必要であるとします。
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 メソッドを使用して外部キー制約を定義し、データの一貫性を確保します。
./yii migrate/up
./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 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']); } }
Index、
View、
、
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
路由到NewsController
的Index
操作。
要定义路由和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
路由到NewsController
的Index
操作,而将news/create
路由到NewsController
的Create
操作。
第六步,测试Yii应用程序
现在,你已经创建了一个新闻网站,并使用Yii框架构建了它。要测试你的新闻网站,你可以在终端中运行如下命令启动本地Web服务器:
./yii serve
然后在浏览器中打开http://localhost:8080,查看你的新闻网站。
最后,当你为你的新闻网站添加更多功能时,你可以根据你的业务需要扩展Yii框架的功能。Yii框架提供了许多工具和类库,可以帮助你尽可能快地开发出高效、安全和易于扩展的Web应用程序。
以上がYii フレームワークを使用してニュース Web サイトを作成するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。