Rumah  >  Artikel  >  rangka kerja php  >  Buat laman web berita menggunakan rangka kerja Yii

Buat laman web berita menggunakan rangka kerja Yii

PHPz
PHPzasal
2023-06-21 08:40:481161semak imbas

Dengan populariti media dalam talian, permintaan untuk laman web berita juga semakin meningkat. Jika anda bercadang untuk membuat laman web berita, pertimbangkan untuk menggunakan rangka kerja Yii untuk membina tapak web anda. Yii ialah rangka kerja PHP popular yang direka untuk menjadikan pembangunan aplikasi web lebih mudah dan cekap.

Rangka kerja Yii mempunyai banyak kelebihan, termasuk:

  1. Prestasi yang cekap

Rangka kerja Yii ialah rangka kerja pantas yang mampu mengendalikan sejumlah besar Permintaan serentak. Ini kerana rangka kerja Yii menggunakan beberapa teknologi PHP terkini dan menggunakan pelbagai mekanisme caching untuk meningkatkan prestasi laman web. Ciri ini sangat penting untuk laman web berita kerana ia perlu dapat mengendalikan situasi trafik yang tinggi.

  1. Fleksibel dan mudah untuk dilanjutkan

Rangka kerja Yii sangat fleksibel dan boleh dipanjangkan dan disesuaikan dengan mudah. Jika anda perlu menambah fungsi baharu atau mengubah suai fungsi sedia ada, rangka kerja Yii menyediakan antara muka sambungan dan perpustakaan kelas yang sangat jelas. Ini bermakna anda boleh menulis modul atau pemalam baharu dengan mudah dan menyepadukannya ke dalam tapak web anda.

  1. Keselamatan tinggi

Rangka kerja Yii direka bentuk dengan keselamatan sebagai prinsip dan menyediakan satu siri mekanisme perlindungan keselamatan. Mekanisme ini termasuk penapisan input, penyulitan data, pengesahan dan fungsi kebenaran. Mekanisme ini diperlukan untuk memastikan laman web berita anda tidak terdedah kepada penggodam atau ancaman keselamatan lain.

Sekarang, mari kita lihat cara membuat tapak web berita menggunakan rangka kerja Yii.

Langkah pertama, pasang rangka kerja Yii

Sebelum bermula, anda perlu memasang rangka kerja Yii. Terdapat dua cara untuk memasang rangka kerja Yii: melalui Komposer atau muat turun manual. Di sini, saya memilih kaedah pemasangan Komposer. Jika anda belum memasang Komposer, sila pasang Komposer dahulu dan tambahkannya pada laluan sistem anda.

Dalam terminal, pergi ke direktori projek anda dan jalankan arahan berikut untuk memasang rangka kerja Yii:

composer require yiisoft/yii2-app-basic

Arahan ini akan memasang templat aplikasi Yii Basic dan pustaka teras Yii. Selepas pemasangan selesai, anda boleh melaksanakan arahan berikut untuk menjalankan aplikasi Yii:

./yii serve

Perintah ini akan memulakan pelayan web tempatan dan menjalankan aplikasi Yii anda. Anda boleh membuka http://localhost:8080 dalam pelayar anda untuk melihat halaman utama tapak web anda.

Langkah kedua, reka pangkalan data laman web berita anda

Sebelum membuat sebarang aplikasi web, anda perlu mereka pangkalan data anda. Andaikan laman web berita kami memerlukan jadual pangkalan data berikut:

  • berita: menyimpan tajuk, kandungan, tarikh dan pengarang berita
  • kategori: menyimpan maklumat klasifikasi berita
  • pengguna: Simpan maklumat pengguna laman web berita

Dalam rangka kerja Yii, anda boleh menggunakan alat Migrasi untuk mencipta, mengemas kini dan mengurus pangkalan data anda. Anda boleh mencipta Migrasi baharu menggunakan arahan berikut:

./yii migrate/create create_news_table

Perintah ini akan mencipta kelas Migrasi bernama create_news_table, yang akan digunakan untuk mencipta jadual news dan jadual lain yang berkaitan (contohnya, category dan user jadual).

Dalam kelas create_news_table, anda perlu menggunakan API pangkalan data rangka kerja Yii untuk mencipta jadual pangkalan data anda. Sebagai contoh, berikut ialah contoh kod untuk mencipta jadual 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');
    }
}

Dalam kod ini, kami menggunakan kaedah createTable rangka kerja Yii untuk mencipta jadual news dan kemudian gunakan addForeignKey kaedah untuk menentukan kunci asing Kekangan memastikan ketekalan data.

Dengan kelas Migrasi, anda boleh menggunakan arahan berikut untuk menjalankan Migration bagi mencipta jadual pangkalan data baharu:

./yii migrate/up

Arahan ini akan mencipta jadual pangkalan data baharu dan jadual lain yang berkaitan.

Langkah ketiga ialah mencipta model Yii

Dalam rangka kerja Yii, model tersebut ialah bahagian teras yang digunakan untuk mewakili logik dan data perniagaan, dan juga merupakan sebahagian daripada corak seni bina MVC. Dalam rangka kerja Yii, model ialah cara paling mudah dan berkuasa untuk memproses data.

Untuk mencipta model, anda boleh menggunakan arahan berikut:

./yii generate/model News --tableName=news

Arahan ini akan mencipta model bernama News dan mengaitkannya dengan jadual news. Seterusnya, anda perlu menyesuaikan model anda menggunakan kod berikut:

<?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',
        ];
    }
}

Dalam kod ini, kami mentakrifkan nama jadual dan peraturan pengesahan untuk model News dan juga mentakrifkan label untuk setiap atribut (untuk teks dipaparkan kepada pengguna). Anda boleh mengakses dan mengubah suai jadual data melalui model ini, contohnya:

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

Ini akan menambah item berita pada jadual news.

Langkah keempat ialah mencipta pengawal dan pandangan Yii

Dalam rangka kerja Yii, pengawal ialah bahagian yang digunakan untuk mengendalikan permintaan pengguna dan memberikan respons. Pengawal mengarahkan permintaan pengguna kepada tindakan yang betul dan menggunakan fail paparan khusus untuk memberikan respons.

Untuk mencipta pengawal, anda boleh menggunakan arahan berikut:

./yii generate/controller News

Ini akan mencipta pengawal bernama NewsController. Seterusnya, anda perlu menambah beberapa tindakan dalam pengawal, contohnya:

<?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']);
    }
}

Dalam kod ini, kami mentakrifkan lima tindakan: Index, View, Create, Update dan Delete . Ini membentangkan fail paparan kepada pengguna dan mengembalikan respons berdasarkan permintaan pengguna.

Untuk mencipta fail paparan untuk operasi ini, contohnya:

  • 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应用程序。

Atas ialah kandungan terperinci Buat laman web berita menggunakan rangka kerja Yii. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn