> PHP 프레임워크 > YII > Yii 프레임워크를 사용하여 뉴스 웹사이트 만들기

Yii 프레임워크를 사용하여 뉴스 웹사이트 만들기

PHPz
풀어 주다: 2023-06-21 08:40:48
원래의
1188명이 탐색했습니다.

온라인 미디어의 인기와 함께 뉴스 웹사이트에 대한 수요도 늘어나고 있습니다. 뉴스 웹사이트를 만들 계획이라면 Yii 프레임워크를 사용하여 웹사이트를 구축하는 것을 고려해 보세요. Yii는 웹 애플리케이션 개발을 더욱 간단하고 효율적으로 만들기 위해 설계된 인기 있는 PHP 프레임워크입니다.

Yii 프레임워크에는 다음을 포함한 많은 장점이 있습니다.

  1. 효율적인 성능

Yii 프레임워크는 많은 수의 동시 요청을 처리할 수 있는 빠른 프레임워크입니다. 이는 Yii 프레임워크가 일부 최신 PHP 기술을 채택하고 다양한 캐싱 메커니즘을 사용하여 웹사이트 성능을 향상시키기 때문입니다. 이 기능은 트래픽이 많은 상황을 처리할 수 있어야 하기 때문에 뉴스 웹사이트에 매우 중요합니다.

  1. 유연하고 확장하기 쉬움

Yii 프레임워크는 매우 유연하며 쉽게 확장하고 사용자 정의할 수 있습니다. 새로운 기능을 추가하거나 기존 기능을 수정해야 하는 경우 Yii 프레임워크는 매우 명확한 확장 인터페이스와 클래스 라이브러리를 제공합니다. 즉, 새 모듈이나 플러그인을 쉽게 작성하고 웹사이트에 통합할 수 있습니다.

  1. 높은 보안

Yii 프레임워크는 보안을 원칙으로 설계되었으며 일련의 보안 보호 메커니즘을 제공합니다. 이러한 메커니즘에는 입력 필터링, 데이터 암호화, 인증 및 권한 부여 기능이 포함됩니다. 이러한 메커니즘은 뉴스 웹사이트가 해커나 기타 보안 위협에 취약하지 않도록 보장하는 데 필요합니다.

이제 Yii 프레임워크를 사용하여 뉴스 웹사이트를 만드는 방법을 살펴보겠습니다.

첫 번째 단계는 Yii 프레임워크를 설치하는 것입니다.

시작하기 전에 Yii 프레임워크를 설치해야 합니다. Yii 프레임워크를 설치하는 방법에는 Composer 또는 수동 다운로드 두 가지가 있습니다. 여기서는 Composer 설치 방법을 선택합니다. 아직 Composer가 설치되어 있지 않다면 먼저 Composer를 설치한 후 시스템 경로에 추가하세요.

터미널에서 프로젝트 디렉터리로 이동하고 다음 명령을 실행하여 Yii 프레임워크를 설치하세요.

composer require yiisoft/yii2-app-basic
로그인 후 복사

이 명령은 Yii Basic 애플리케이션 템플릿과 Yii 코어 라이브러리를 설치합니다. 설치가 완료되면 다음 명령을 실행하여 Yii 애플리케이션을 실행할 수 있습니다:

./yii serve
로그인 후 복사
로그인 후 복사
로그인 후 복사

이 명령은 로컬 웹 서버를 시작하고 Yii 애플리케이션을 실행합니다. 브라우저에서 http://localhost:8080을 열어 웹사이트 홈페이지를 볼 수 있습니다.

두 번째 단계, 뉴스 웹사이트 데이터베이스 디자인

웹 애플리케이션을 만들기 전에 데이터베이스를 디자인해야 합니다. 뉴스 웹 사이트에 다음 데이터베이스 테이블이 필요하다고 가정합니다.

  • news: 뉴스의 제목, 내용, 날짜 및 작성자를 저장합니다.
  • category: 뉴스의 분류 정보를 저장합니다.
  • user: 뉴스의 사용자 정보를 저장합니다. 웹사이트

Yii 프레임워크에서는 마이그레이션 도구를 사용하여 데이터베이스를 생성, 업데이트 및 관리할 수 있습니다. 다음 명령을 사용하여 새 마이그레이션을 생성할 수 있습니다.

./yii migrate/create create_news_table
로그인 후 복사

이 명령은 create_news_table이라는 마이그레이션 클래스를 생성합니다. 이 클래스는 news 테이블 및 기타 생성에 사용됩니다. 관련 테이블(예: 범주사용자 테이블) 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

create_news_table 클래스에서 Yii 프레임워크의 데이터베이스 API를 사용하여 데이터베이스 테이블을 생성해야 합니다. 예를 들어, 다음은 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; ?>
로그인 후 복사
로그인 후 복사

이 코드에서는 Yii 프레임워크의 createTable 메서드를 사용하여 를 생성합니다. news 테이블을 선택한 다음 addForeignKey 메서드를 사용하여 외래 키 제약 조건을 정의하여 데이터 일관성을 보장합니다. 🎜🎜Migration 클래스를 사용하면 다음 명령을 사용하여 마이그레이션을 실행하여 새 데이터베이스 테이블을 생성할 수 있습니다. 🎜
'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',
    ],
],
로그인 후 복사
로그인 후 복사
🎜이 명령은 새 데이터베이스 테이블 및 기타 관련 테이블을 생성합니다. 🎜🎜세 번째 단계는 Yii 모델을 만드는 것입니다🎜🎜Yii 프레임워크에서 모델은 비즈니스 로직과 데이터를 표현하는 데 사용되는 핵심 부분이자 MVC 아키텍처 패턴의 일부이기도 합니다. Yii 프레임워크에서 모델은 데이터를 처리하는 가장 간단하고 강력한 방법입니다. 🎜🎜모델을 생성하려면 다음 명령을 사용할 수 있습니다. 🎜
./yii serve
로그인 후 복사
로그인 후 복사
로그인 후 복사
🎜이 명령은 News라는 모델을 생성하고 이를 news 테이블에 연결합니다. 다음으로, 다음 코드를 사용하여 모델을 사용자 정의해야 합니다. 🎜rrreee🎜이 코드에서는 News 모델에 대한 테이블 이름과 유효성 검사 규칙을 정의하고 각 속성에 대한 레이블도 정의합니다( 사용자에게 표시되는 텍스트). 이 모델을 통해 데이터 테이블에 액세스하고 수정할 수 있습니다. 예: 🎜rrreee🎜이렇게 하면 뉴스 테이블에 뉴스 항목이 추가됩니다. 🎜🎜4단계, Yii 컨트롤러 생성 및 뷰🎜🎜Yii 프레임워크에서 컨트롤러는 사용자 요청을 처리하고 응답을 렌더링하는 데 사용되는 부분입니다. 컨트롤러는 사용자 요청을 올바른 작업으로 라우팅하고 특정 보기 파일을 사용하여 응답을 렌더링합니다. 🎜🎜컨트롤러를 생성하려면 다음 명령을 사용할 수 있습니다: 🎜rrreee🎜이렇게 하면 NewsController라는 컨트롤러가 생성됩니다. 다음으로 컨트롤러에 몇 가지 작업을 추가해야 합니다. 예: 🎜rrreee🎜이 코드에서는 Index, View, Create<의 다섯 가지 작업을 정의합니다. /code>, <code>업데이트삭제. 이는 사용자에게 보기 파일을 제공하고 사용자의 요청에 따라 응답을 반환합니다. 🎜🎜이러한 작업에 대한 보기 파일을 생성하려면 예를 들면 다음과 같습니다. 🎜
  • 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 프레임워크를 사용하여 뉴스 웹사이트 만들기의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 이슈
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿