Heim > PHP-Framework > YII > Erstellen Sie eine Nachrichten-Website mit dem Yii-Framework

Erstellen Sie eine Nachrichten-Website mit dem Yii-Framework

PHPz
Freigeben: 2023-06-21 08:40:48
Original
1189 Leute haben es durchsucht

Mit der Popularität von Online-Medien wächst auch die Nachfrage nach Nachrichten-Websites. Wenn Sie vorhaben, eine Nachrichten-Website zu erstellen, sollten Sie die Verwendung des Yii-Frameworks zum Erstellen Ihrer Website in Betracht ziehen. Yii ist ein beliebtes PHP-Framework, das die Entwicklung von Webanwendungen einfacher und effizienter machen soll.

Yii-Framework hat viele Vorteile, darunter:

  1. Effiziente Leistung

Yii-Framework ist ein schnelles Framework, das eine große Anzahl gleichzeitiger Anfragen verarbeiten kann. Dies liegt daran, dass das Yii-Framework einige der neuesten PHP-Technologien übernimmt und verschiedene Caching-Mechanismen verwendet, um die Website-Leistung zu verbessern. Diese Funktion ist für Nachrichten-Websites sehr wichtig, da sie in der Lage sein muss, Situationen mit hohem Datenverkehr zu bewältigen.

  1. Flexibel und einfach erweiterbar

Das Yii-Framework ist sehr flexibel und kann einfach erweitert und angepasst werden. Wenn Sie neue Funktionen hinzufügen oder vorhandene Funktionen ändern müssen, bietet das Yii-Framework sehr übersichtliche Erweiterungsschnittstellen und Klassenbibliotheken. Das bedeutet, dass Sie problemlos neue Module oder Plugins schreiben und in Ihre Website integrieren können.

  1. Hohe Sicherheit

Das Yii-Framework ist auf Sicherheit als Prinzip ausgelegt und bietet eine Reihe von Sicherheitsschutzmechanismen. Zu diesen Mechanismen gehören Eingabefilterung, Datenverschlüsselung, Authentifizierung und Autorisierungsfunktionen. Diese Mechanismen sind notwendig, um sicherzustellen, dass Ihre Nachrichten-Website nicht anfällig für Hacker oder andere Sicherheitsbedrohungen ist.

Schauen wir uns nun an, wie man mit dem Yii-Framework eine Nachrichten-Website erstellt.

Der erste Schritt besteht darin, das Yii-Framework zu installieren.

Bevor Sie beginnen, müssen Sie das Yii-Framework installieren. Es gibt zwei Möglichkeiten, das Yii-Framework zu installieren: über Composer oder manuellen Download. Hier wähle ich die Composer-Installationsmethode. Wenn Sie Composer noch nicht installiert haben, installieren Sie bitte zuerst Composer und fügen Sie es Ihrem Systempfad hinzu.

Gehen Sie im Terminal zu Ihrem Projektverzeichnis und führen Sie den folgenden Befehl aus, um das Yii-Framework zu installieren:

composer require yiisoft/yii2-app-basic
Nach dem Login kopieren

Dieser Befehl installiert die Yii Basic-Anwendungsvorlage und die Yii-Kernbibliothek. Nachdem die Installation abgeschlossen ist, können Sie den folgenden Befehl ausführen, um die Yii-Anwendung auszuführen:

./yii serve
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Dieser Befehl startet einen lokalen Webserver und führt Ihre Yii-Anwendung aus. Sie können http://localhost:8080 in Ihrem Browser öffnen, um die Homepage Ihrer Website anzuzeigen.

Zweiter Schritt: Entwerfen Sie Ihre Nachrichten-Website-Datenbank.

Bevor Sie eine Webanwendung erstellen, müssen Sie Ihre Datenbank entwerfen. Gehen Sie davon aus, dass unsere Nachrichten-Website die folgenden Datenbanktabellen benötigt:

  • news: speichert Titel, Inhalt, Datum und Autor der Nachrichten.
  • category: speichert die Klassifizierungsinformationen der Nachrichten.
  • user: speichert die Benutzerinformationen der Nachrichten Website

Im Yii-Framework können Sie das Migrationstool verwenden, um Ihre Datenbank zu erstellen, zu aktualisieren und zu verwalten. Sie können den folgenden Befehl verwenden, um eine neue Migration zu erstellen:

./yii migrate/create create_news_table
Nach dem Login kopieren

Dieser Befehl erstellt eine Migrationsklasse mit dem Namen create_news_table. Diese Klasse wird zum Erstellen von news-Tabellen und anderen verwendet Verwandte Tabellen (z. B. category- und user-Tabellen). 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');
    }
}
Nach dem Login kopieren

在这个代码中,我们使用Yii框架的createTable方法来创建news表格,接着用addForeignKey方法定义外键约束,保证了数据的一致性。

有了Migration类,你可以使用如下命令运行Migration,来创建新的数据库表格:

./yii migrate/up
Nach dem Login kopieren

这个命令将创建新的数据库表格和其它相关的表格。

第三步,创建Yii模型

在Yii框架中,模型是用来表示业务逻辑和数据的核心部分,也是MVC架构模式中的一部分。在Yii框架中,模型是用来处理数据的最简单和最有力的方式。

要创建一个模型,你可以使用如下命令:

./yii generate/model News --tableName=news
Nach dem Login kopieren

这个命令将创建一个名为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',
        ];
    }
}
Nach dem Login kopieren

在这个代码中,我们定义了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();
Nach dem Login kopieren

这将在news表格中添加一条新闻。

第四步,创建Yii控制器和视图

在Yii框架中,控制器是用来处理用户请求并呈现响应的部分。控制器可将用户请求路由到正确的操作,并使用特定的视图文件来呈现响应。

要创建一个控制器,你可以使用如下命令:

./yii generate/controller News
Nach dem Login kopieren

这将创建一个名为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']);
    }
}
Nach dem Login kopieren

在这个代码中,我们定义了五个操作:IndexViewCreateUpdateDelete

In der Klasse create_news_table müssen Sie die Datenbank-API des Yii-Frameworks verwenden, um Ihre Datenbanktabelle zu erstellen. Das Folgende ist beispielsweise ein Beispielcode zum Erstellen einer news-Tabelle:

<?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; ?>
Nach dem Login kopieren
Nach dem Login kopieren

In diesem Code verwenden wir die createTable-Methode des Yii-Frameworks, um zu erstellen news-Tabelle und verwenden Sie dann die Methode addForeignKey, um Fremdschlüsseleinschränkungen zu definieren, um die Datenkonsistenz sicherzustellen. 🎜🎜Mit der Migration-Klasse können Sie den folgenden Befehl verwenden, um Migration auszuführen, um eine neue Datenbanktabelle zu erstellen: 🎜
'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',
    ],
],
Nach dem Login kopieren
Nach dem Login kopieren
🎜Dieser Befehl erstellt eine neue Datenbanktabelle und andere verwandte Tabellen. 🎜🎜Der dritte Schritt besteht darin, das Yii-Modell zu erstellen🎜🎜Im Yii-Framework ist das Modell der Kernbestandteil, der zur Darstellung von Geschäftslogik und Daten verwendet wird, und ist auch Teil des MVC-Architekturmusters. Im Yii-Framework sind Modelle die einfachste und leistungsstärkste Möglichkeit, Daten zu verarbeiten. 🎜🎜Um ein Modell zu erstellen, können Sie den folgenden Befehl verwenden: 🎜
./yii serve
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
🎜Dieser Befehl erstellt ein Modell mit dem Namen News und verknüpft es mit der Tabelle news. Als Nächstes müssen Sie Ihr Modell mit dem folgenden Code anpassen: 🎜rrreee🎜In diesem Code definieren wir den Tabellennamen und die Validierungsregeln für das News-Modell sowie die Beschriftungen für jedes Attribut (mit im Text, der dem Benutzer angezeigt wird). Sie können über dieses Modell auf Datentabellen zugreifen und diese ändern, zum Beispiel: 🎜rrreee🎜Dadurch wird ein Nachrichtenelement zur Tabelle news hinzugefügt. 🎜🎜Schritt 4: Yii-Controller erstellen und anzeigen🎜🎜Im Yii-Framework ist der Controller der Teil, der zum Verarbeiten von Benutzeranfragen und zum Rendern von Antworten verwendet wird. Der Controller leitet Benutzeranfragen an die richtige Aktion weiter und verwendet eine bestimmte Ansichtsdatei, um die Antwort darzustellen. 🎜🎜Um einen Controller zu erstellen, können Sie den folgenden Befehl verwenden: 🎜rrreee🎜Dadurch wird ein Controller mit dem Namen NewsController erstellt. Als nächstes müssen Sie dem Controller einige Operationen hinzufügen, zum Beispiel: 🎜rrreee🎜In diesem Code definieren wir fünf Operationen: Index, View, Create< /code>, <code>Aktualisieren und Löschen. Dadurch wird dem Benutzer die Ansichtsdatei präsentiert und eine Antwort basierend auf der Anfrage des Benutzers zurückgegeben. 🎜🎜Um Ansichtsdateien für diese Vorgänge zu erstellen, zum Beispiel: 🎜
  • 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; ?>
Nach dem Login kopieren
Nach dem Login kopieren

在这个代码中,我们用循环遍历新闻,然后为每个新闻输出标题、内容、日期、作者和分类,以及三个按钮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',
    ],
],
Nach dem Login kopieren
Nach dem Login kopieren

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

第六步,测试Yii应用程序

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

./yii serve
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

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

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

Das obige ist der detaillierte Inhalt vonErstellen Sie eine Nachrichten-Website mit dem Yii-Framework. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage