Le mariage est un moment important dans la vie de chacun. Pour la plupart des gens, un beau mariage est très important. Lors de la planification d'un mariage, le couple prête non seulement attention à la taille et à la splendeur du mariage, mais accorde également plus d'attention aux détails et à l'expérience personnalisée du mariage. Pour résoudre ce problème, de nombreuses sociétés d’organisation de mariages ont été créées et ont développé leurs propres sites Web. Cet article explique comment utiliser le framework Yii pour créer un site Web de planification de mariage.
Le framework Yii est un framework PHP hautes performances. Sa simplicité et sa facilité d'utilisation sont profondément appréciées des développeurs. Grâce au framework Yii, nous pouvons développer plus efficacement un site Web de haute qualité. Ce qui suit explique comment utiliser le framework Yii pour créer un site Web de planification de mariage.
Étape 1 : Installer le framework Yii
Tout d'abord, nous devons installer le framework Yii. Vous pouvez l'installer via composer :
composer create-project --prefer-dist yiisoft/yii2-app-basic basic
ou télécharger le package compressé du framework Yii et le décompresser dans le répertoire du serveur. Après décompression, exécutez la commande suivante pour installer les dépendances requises :
php composer.phar install
Étape 2 : Créer la base de données et les tables correspondantes
Dans l'étape précédente, nous avons installé avec succès le framework Yii. Ensuite, vous devez créer la base de données et les tables correspondantes. Il peut être créé directement via des outils tels que MySQL Workbench.
Créez une base de données nommée wedding, puis créez une table avec la structure suivante :
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;
Parmi eux, la table user stocke les informations sur l'utilisateur et la table article stocke les informations sur l'article .
Étape 3 : Créer le modèle
Dans le framework Yii, le modèle fait partie du M (Modèle) dans l'architecture MVC et est responsable du traitement des données. Nous devons créer deux modèles, User et 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']); } }
Dans le code ci-dessus, nous définissons deux modèles, User et Article, en héritant de la classe ActiveRecord. Le modèle User implémente l'interface IdentityInterface pour l'authentification de l'identité ; le modèle Article définit la relation entre les utilisateurs et les articles via la méthode getUser().
Étape 4 : Créer des contrôleurs et des vues
Dans le framework Yii, le contrôleur fait partie du C (Contrôleur) dans l'architecture MVC et est responsable du traitement des requêtes Web reçues. Nous devons créer deux contrôleurs : UserController et ArticleController, ainsi que les vues correspondantes.
UserController est utilisé pour gérer l'enregistrement des utilisateurs, la connexion et d'autres opérations :
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 est utilisé pour gérer l'édition, l'affichage et d'autres opérations des articles :
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.'); } }
Dans le framework Yii, la configuration du routage et la configuration de la connexion à la base de données doivent être configurées dans le fichier de configuration. Nous devons modifier les deux fichiers suivants :
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, ];
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!