Perkahwinan adalah detik penting dalam kehidupan setiap orang, bagi kebanyakan orang, perkahwinan yang indah adalah sangat penting. Apabila merancang perkahwinan, pasangan itu bukan sahaja memberi perhatian kepada saiz dan kemegahan perkahwinan, tetapi juga memberi lebih perhatian kepada butiran dan pengalaman peribadi perkahwinan. Untuk menyelesaikan masalah ini, banyak syarikat perancang perkahwinan telah menubuhkan dan membangunkan laman web mereka sendiri. Artikel ini akan memperkenalkan cara menggunakan rangka kerja Yii untuk membuat laman web perancangan perkahwinan.
Rangka kerja Yii ialah rangka kerja PHP berprestasi tinggi Kesederhanaan dan kemudahan penggunaannya amat disukai oleh pembangun. Menggunakan rangka kerja Yii, kami boleh membangunkan tapak web berkualiti tinggi dengan lebih cekap. Berikut akan memperkenalkan cara menggunakan rangka kerja Yii untuk membuat laman web perancangan perkahwinan.
Langkah 1: Pasang rangka kerja Yii
Mula-mula, kita perlu memasang rangka kerja Yii. Anda boleh memasangnya melalui komposer:
composer create-project --prefer-dist yiisoft/yii2-app-basic basic
atau muat turun pakej termampat rangka kerja Yii dan ekstraknya ke direktori pelayan. Selepas penyahmampatan, jalankan arahan berikut untuk memasang kebergantungan yang diperlukan:
php composer.phar install
Langkah 2: Cipta pangkalan data dan jadual yang sepadan
Dalam langkah sebelumnya, kami telah berjaya memasang rangka kerja Yii. Seterusnya, anda perlu mencipta pangkalan data dan jadual yang sepadan. Ia boleh dibuat terus melalui alatan seperti MySQL Workbench.
Buat pangkalan data bernama perkahwinan, dan kemudian buat jadual dengan struktur berikut:
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;
Antaranya, jadual pengguna menyimpan maklumat pengguna, dan jadual artikel menyimpan maklumat artikel.
Langkah 3: Cipta model
Dalam rangka kerja Yii, model adalah sebahagian daripada M (Model) dalam seni bina MVC dan bertanggungjawab untuk memproses data. Kami perlu mencipta dua model, Pengguna dan Artikel:
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']); } }
Dalam kod di atas, kami mentakrifkan dua model, Pengguna dan Artikel, dengan mewarisi kelas ActiveRecord. Model Pengguna melaksanakan antara muka IdentityInterface untuk pengesahan identiti model Artikel mentakrifkan hubungan antara pengguna dan artikel melalui kaedah getUser().
Langkah 4: Buat pengawal dan pandangan
Dalam rangka kerja Yii, pengawal adalah sebahagian daripada C (Pengawal) dalam seni bina MVC dan bertanggungjawab untuk memproses permintaan web yang diterima. Kita perlu mencipta dua pengawal: UserController dan ArticleController, serta pandangan yang sepadan.
UserController digunakan untuk mengendalikan pendaftaran pengguna, log masuk dan operasi lain:
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 digunakan untuk mengendalikan penyuntingan artikel, paparan dan operasi lain:
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.'); } }
Dalam kod di atas , kami menggunakan Beberapa komponen dan operasi terbina dalam Yii, seperti AccessControl, ActiveDataProvider, VerbFilter, dsb., untuk pembangunan yang lebih cekap.
Langkah 5: Konfigurasikan penghalaan dan pangkalan data
Dalam rangka kerja Yii, konfigurasi penghalaan dan konfigurasi sambungan pangkalan data perlu dikonfigurasikan dalam fail konfigurasi. Kami perlu mengedit dua fail berikut:
/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, ];
Dalam kod di atas, anda perlu mengkonfigurasi pangkalan data, penghalaan URL dan maklumat lain supaya projek dapat berjalan dengan lancar. Maklumat sambungan pangkalan data perlu dikonfigurasikan dalam fail /config/db.php supaya rangka kerja Yii boleh berinteraksi dengan pangkalan data.
Akhir sekali, kami juga perlu mengkonfigurasi maklumat penghantaran e-mel dalam /config/params.php supaya pengguna boleh menerima e-mel pengesahan selepas pendaftaran berjaya.
Pada ketika ini, kami telah menyelesaikan keseluruhan proses mencipta laman web perancangan perkahwinan menggunakan rangka kerja Yii. Melalui pengenalan artikel ini, anda telah pun memahami penggunaan asas rangka kerja Yii dan cara membuat laman web perancangan perkahwinan yang mudah. Jika anda ingin mencipta laman web perkahwinan yang lebih kompleks dan profesional, anda perlu mempelajari lagi rangka kerja Yii untuk membangunkan aplikasi web dengan lebih cekap.
Atas ialah kandungan terperinci Buat laman web perancangan perkahwinan menggunakan kerangka Yii. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!