Maison  >  Article  >  cadre php  >  Créer un site Web d'actualités en utilisant le framework Yii

Créer un site Web d'actualités en utilisant le framework Yii

PHPz
PHPzoriginal
2023-06-21 08:40:481101parcourir

Avec la popularité des médias en ligne, la demande de sites Web d'information augmente également. Si vous envisagez de créer un site Web d'actualités, envisagez d'utiliser le framework Yii pour créer votre site Web. Yii est un framework PHP populaire conçu pour rendre le développement d'applications Web plus simple et plus efficace.

Le framework Yii présente de nombreux avantages, notamment :

  1. Des performances efficaces

Le framework Yii est un framework rapide capable de gérer un grand nombre de requêtes simultanées. En effet, le framework Yii adopte certaines des dernières technologies PHP et utilise divers mécanismes de mise en cache pour améliorer les performances du site Web. Cette fonctionnalité est très importante pour les sites d’information car elle doit être capable de gérer des situations de trafic élevé.

  1. Flexible et facile à étendre

Le framework Yii est très flexible et peut être facilement étendu et personnalisé. Si vous devez ajouter de nouvelles fonctionnalités ou modifier des fonctionnalités existantes, le framework Yii fournit des interfaces d'extension et des bibliothèques de classes très claires. Cela signifie que vous pouvez facilement écrire de nouveaux modules ou plugins et les intégrer à votre site Web.

  1. Haute sécurité

Le framework Yii est conçu avec la sécurité comme principe et fournit une série de mécanismes de protection de sécurité. Ces mécanismes incluent des fonctions de filtrage d'entrée, de cryptage des données, d'authentification et d'autorisation. Ces mécanismes sont nécessaires pour garantir que votre site Web d'actualités n'est pas vulnérable aux pirates informatiques ou à d'autres menaces de sécurité.

Voyons maintenant comment créer un site Web d'actualités à l'aide du framework Yii.

La première étape, installez le framework Yii

Avant de commencer, vous devez installer le framework Yii. Il existe deux manières d'installer le framework Yii : via Composer ou par téléchargement manuel. Ici, je choisis la méthode d'installation de Composer. Si Composer n'est pas encore installé, veuillez d'abord installer Composer et l'ajouter à votre chemin système.

Dans le terminal, accédez au répertoire de votre projet et exécutez la commande suivante pour installer le framework Yii :

composer require yiisoft/yii2-app-basic

Cette commande installera le modèle d'application Yii Basic et la bibliothèque principale Yii. Une fois l'installation terminée, vous pouvez exécuter la commande suivante pour exécuter l'application Yii :

./yii serve

Cette commande démarrera un serveur Web local et exécutera votre application Yii. Vous pouvez ouvrir http://localhost:8080 dans votre navigateur pour afficher la page d'accueil de votre site Web.

Deuxième étape, concevez la base de données de votre site d'actualités

Avant de créer une application Web, vous devez concevoir votre base de données. Supposons que notre site Web d'actualités ait besoin des tables de base de données suivantes :

  • news : stocke le titre, le contenu, la date et l'auteur de l'actualité
  • category : stocke les informations de classification de l'actualité
  • user : stocke les informations utilisateur de l'actualité website

Dans le framework Yii, vous pouvez utiliser les outils de Migrations pour créer, mettre à jour et gérer votre base de données. Vous pouvez utiliser la commande suivante pour créer une nouvelle Migration :

./yii migrate/create create_news_table

Cette commande créera une classe de Migration nommée create_news_table Cette classe sera utilisée pour créer des tables news et autres. Tables associées (par exemple, tables category et user). 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

Dans la classe create_news_table, vous devez utiliser l'API de base de données du framework Yii pour créer votre table de base de données. Par exemple, voici un exemple de code pour créer une table news :

<?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; ?>

Dans ce code, nous utilisons la méthode createTable du framework Yii pour créer news, puis utilisez la méthode addForeignKey pour définir les contraintes de clé étrangère afin de garantir la cohérence des données. 🎜🎜Avec la classe Migration, vous pouvez utiliser la commande suivante pour exécuter Migration afin de créer une nouvelle table de base de données : 🎜
'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',
    ],
],
🎜Cette commande créera une nouvelle table de base de données et d'autres tables associées. 🎜🎜La troisième étape consiste à créer le modèle Yii🎜🎜Dans le framework Yii, le modèle est la partie centrale utilisée pour représenter la logique métier et les données, et fait également partie du modèle d'architecture MVC. Dans le framework Yii, les modèles constituent le moyen le plus simple et le plus puissant de traiter les données. 🎜🎜Pour créer un modèle, vous pouvez utiliser la commande suivante : 🎜
./yii serve
🎜Cette commande créera un modèle nommé News et l'associera à la table news. Ensuite, vous devez personnaliser votre modèle à l'aide du code suivant : 🎜rrreee🎜Dans ce code, nous définissons le nom de la table et les règles de validation pour le modèle News, et définissons également les étiquettes pour chaque attribut (en utilisant dans le texte affiché à l'utilisateur). Vous pouvez accéder et modifier les tables de données via ce modèle, par exemple : 🎜rrreee🎜Cela ajoutera une actualité à la table news. 🎜🎜Étape 4, créer le contrôleur Yii et afficher🎜🎜Dans le framework Yii, le contrôleur est la partie utilisée pour gérer les demandes des utilisateurs et restituer les réponses. Le contrôleur achemine les demandes des utilisateurs vers l'action correcte et utilise un fichier de vue spécifique pour afficher la réponse. 🎜🎜Pour créer un contrôleur, vous pouvez utiliser la commande suivante : 🎜rrreee🎜Cela créera un contrôleur nommé NewsController. Ensuite, vous devez ajouter quelques opérations au contrôleur, par exemple : 🎜rrreee🎜Dans ce code, nous définissons cinq opérations : Index, View, Create, <code>Mettre à jour et Supprimer. Cela présente le fichier de vue à l'utilisateur et renvoie une réponse basée sur la demande de l'utilisateur. 🎜🎜Afin de créer des fichiers de vue pour ces opérations, par exemple : 🎜
  • 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应用程序。

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn