>  기사  >  PHP 프레임워크  >  Yii 프레임워크를 사용하여 결혼 계획 웹사이트 만들기

Yii 프레임워크를 사용하여 결혼 계획 웹사이트 만들기

WBOY
WBOY원래의
2023-06-21 08:48:211484검색

결혼식은 모든 사람의 인생에서 중요한 순간입니다. 대부분의 사람들에게 아름다운 결혼식은 매우 중요합니다. 결혼식을 계획할 때 부부는 결혼식의 규모와 화려함뿐만 아니라 결혼식의 세부 사항과 개인화 된 경험에도 더 많은 관심을 기울입니다. 이러한 문제를 해결하기 위해 많은 웨딩 기획사들이 자체 홈페이지를 구축, 개발하고 있습니다. 이 기사에서는 Yii 프레임워크를 사용하여 결혼 계획 웹사이트를 만드는 방법을 소개합니다.

Yii 프레임워크는 고성능 PHP 프레임워크로, 단순성과 사용 편의성으로 인해 개발자들에게 큰 사랑을 받고 있습니다. Yii 프레임워크를 사용하면 고품질 웹사이트를 보다 효율적으로 개발할 수 있습니다. 다음은 Yii 프레임워크를 사용하여 결혼 계획 웹사이트를 만드는 방법을 소개합니다.

1단계: Yii 프레임워크 설치
먼저 Yii 프레임워크를 설치해야 합니다. Composer:

composer create-project --prefer-dist yiisoft/yii2-app-basic basic

를 통해 설치하거나 Yii 프레임워크 압축 패키지를 다운로드하여 서버 디렉토리에 추출할 수 있습니다. 압축을 푼 후 다음 명령을 실행하여 필요한 종속성을 설치합니다.

php composer.phar install

2단계: 데이터베이스 및 해당 테이블 생성
이전 단계에서는 Yii 프레임워크를 성공적으로 설치했습니다. 다음으로 데이터베이스와 해당 테이블을 생성해야 합니다. MySQL Workbench와 같은 도구를 통해 직접 생성할 수 있습니다.

wedding이라는 데이터베이스를 생성한 후, 다음과 같은 구조의 테이블을 생성합니다.

CREATE TABLE IF NOT EXISTS `user` (
    `id` INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    `username` VARCHAR(255) NOT NULL,
    `password_hash` VARCHAR(255) NOT NULL,
    `email` VARCHAR(255) NOT NULL,
    `auth_key` VARCHAR(255) NOT NULL,
    `status` SMALLINT NOT NULL DEFAULT 10,
    `created_at` INT NOT NULL,
    `updated_at` INT NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

CREATE TABLE IF NOT EXISTS `article` (
    `id` INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    `title` VARCHAR(255) NOT NULL,
    `content` TEXT NOT NULL,
    `status` SMALLINT NOT NULL DEFAULT 10,
    `created_at` INT NOT NULL,
    `updated_at` INT NOT NULL,
    `user_id` INT UNSIGNED NOT NULL,
    CONSTRAINT `fk_article_user_id` FOREIGN KEY (`user_id`) REFERENCES `user` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

그 중 user 테이블은 사용자 정보를 저장하고, article 테이블은 기사 정보를 저장합니다.

3단계: 모델 만들기
Yii 프레임워크에서 모델은 MVC 아키텍처의 M(Model)의 일부이며 데이터 처리를 담당합니다. User와 Article이라는 두 가지 모델을 만들어야 합니다.

class User extends ActiveRecord implements IdentityInterface
{
    public static function findIdentity($id)
    {
        return static::findOne($id);
    }

    public static function findIdentityByAccessToken($token, $type = null)
    {
        throw new NotSupportedException('"findIdentityByAccessToken" is not implemented.');
    }

    public function getId()
    {
        return $this->getPrimaryKey();
    }

    public function getAuthKey()
    {
        return $this->auth_key;
    }

    public function validateAuthKey($authKey)
    {
        return $this->getAuthKey() === $authKey;
    }

    public static function findByUsername($username)
    {
        return static::findOne(['username' => $username, 'status' => self::STATUS_ACTIVE]);
    }

    public function validatePassword($password)
    {
        return Yii::$app->security->validatePassword($password, $this->password_hash);
    }
}

class Article extends ActiveRecord
{
    public function getUser()
    {
        return $this->hasOne(User::className(), ['id' => 'user_id']);
    }
}

위 코드에서는 ActiveRecord 클래스를 상속하여 User와 Article이라는 두 가지 모델을 정의합니다. User 모델은 ID 인증을 위한 IdentityInterface 인터페이스를 구현합니다. Article 모델은 getUser() 메소드를 통해 사용자와 기사 간의 관계를 정의합니다.

4단계: 컨트롤러 및 뷰 만들기
Yii 프레임워크에서 컨트롤러는 MVC 아키텍처의 C(컨트롤러)의 일부이며 수신된 웹 요청을 처리하는 역할을 합니다. UserController와 ArticleController라는 두 개의 컨트롤러와 해당 뷰를 만들어야 합니다.

UserController는 사용자 등록, 로그인 및 기타 작업을 처리하는 데 사용됩니다.

class UserController extends Controller
{
    public function actionSignup()
    {
        $model = new SignupForm();

        if ($model->load(Yii::$app->request->post()) && $model->signup()) {
            Yii::$app->session->setFlash('success', 'Thank you for registration. Please check your inbox for verification email.');
            return $this->goHome();
        }

        return $this->render('signup', [
            'model' => $model,
        ]);
    }

    public function actionLogin()
    {
        $model = new LoginForm();

        if ($model->load(Yii::$app->request->post()) && $model->login()) {
            return $this->goBack();
        }

        return $this->render('login', [
            'model' => $model,
        ]);
    }

    public function actionLogout()
    {
        Yii::$app->user->logout();

        return $this->goHome();
    }
}

ArticleController는 기사 편집, 표시 및 기타 작업을 처리하는 데 사용됩니다.

class ArticleController extends Controller
{
    public function behaviors()
    {
        return [
            'access' => [
                'class' => AccessControl::className(),
                'only' => ['create', 'update'],
                'rules' => [
                    [
                        'actions' => ['create', 'update'],
                        'allow' => true,
                        'roles' => ['@'],
                    ],
                ],
            ],
            'verbs' => [
                'class' => VerbFilter::className(),
                'actions' => [
                    'delete' => ['POST'],
                ],
            ],
        ];
    }

    public function actionIndex()
    {
        $dataProvider = new ActiveDataProvider([
            'query' => Article::find(),
        ]);

        return $this->render('index', [
            'dataProvider' => $dataProvider,
        ]);
    }

    public function actionView($id)
    {
        return $this->render('view', [
            'model' => $this->findModel($id),
        ]);
    }

    public function actionCreate()
    {
        $model = new Article();

        if ($model->load(Yii::$app->request->post()) && $model->save()) {
            return $this->redirect(['view', 'id' => $model->id]);
        }

        return $this->render('create', [
            'model' => $model,
        ]);
    }

    public function actionUpdate($id)
    {
        $model = $this->findModel($id);

        if ($model->load(Yii::$app->request->post()) && $model->save()) {
            return $this->redirect(['view', 'id' => $model->id]);
        }

        return $this->render('update', [
            'model' => $model,
        ]);
    }

    public function actionDelete($id)
    {
        $this->findModel($id)->delete();

        return $this->redirect(['index']);
    }

    protected function findModel($id)
    {
        if (($model = Article::findOne($id)) !== null) {
            return $model;
        }

        throw new NotFoundHttpException('The requested page does not exist.');
    }
}

위 코드에서는 Yii의 일부 내장 구성 요소와 작업을 사용합니다. , AccessControl, ActiveDataProvider, VerbFilter 등과 같은 기능을 사용하여 보다 효율적으로 개발할 수 있습니다.

5단계: 라우팅 및 데이터베이스 구성
Yii 프레임워크에서는 라우팅 구성 및 데이터베이스 연결 구성을 구성 파일에서 구성해야 합니다. 다음 두 파일을 편집해야 합니다.

/config/web.php:

return [
    'id' => 'basic',
    'basePath' => dirname(__DIR__),
    'bootstrap' => ['log'],
    'components' => [
        'request' => [
            'csrfParam' => '_csrf',
        ],
        'user' => [
            'identityClass' => 'appmodelsUser',
            'enableAutoLogin' => true,
        ],
        'session' => [
            // this is the name of the session cookie used for login on the frontend
            'name' => 'wedding_session',
        ],
        'log' => [
            'traceLevel' => YII_DEBUG ? 3 : 0,
            'targets' => [
                [
                    'class' => 'yiilogFileTarget',
                    'levels' => ['error', 'warning'],
                ],
            ],
        ],
        'urlManager' => [
            'enablePrettyUrl' => true,
            'showScriptName' => false,
            'rules' => [
                '' => 'article/index',
                '<controller>/<action>' => '<controller>/<action>',
                '<controller>/<action>/<id:d+>' => '<controller>/<action>',
            ],
        ],
        'db' => require __DIR__ . '/db.php',
    ],
    'params' => $params,
];

위 코드에서는 프로젝트가 원활하게 실행될 수 있도록 데이터베이스, URL 라우팅 및 기타 정보를 구성해야 합니다. Yii 프레임워크가 데이터베이스와 상호 작용할 수 있도록 데이터베이스 연결 정보를 /config/db.php 파일에 구성해야 합니다.

마지막으로 사용자가 성공적으로 등록한 후 확인 이메일을 받을 수 있도록 /config/params.php에서 이메일 전송 정보를 구성해야 합니다.

이 시점에서 우리는 Yii 프레임워크를 사용하여 결혼 계획 웹사이트를 만드는 전체 과정을 완료했습니다. 이 글의 소개를 통해 이미 Yii 프레임워크의 기본 사용법과 간단한 결혼 계획 웹사이트를 만드는 방법을 이해하셨습니다. 보다 복잡하고 전문적인 웨딩 웹사이트를 만들고 싶다면 웹 애플리케이션을 보다 효율적으로 개발하기 위해 Yii 프레임워크를 더 배워야 합니다.

위 내용은 Yii 프레임워크를 사용하여 결혼 계획 웹사이트 만들기의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.