Dengan populariti Internet dan kecintaan orang ramai terhadap filem, tapak web filem telah menjadi jenis tapak web yang popular. Apabila membuat laman web filem, rangka kerja yang baik sangat diperlukan. Rangka kerja Yii ialah rangka kerja PHP berprestasi tinggi yang mudah digunakan dan mempunyai prestasi cemerlang. Dalam artikel ini, kami akan meneroka cara membuat tapak web filem menggunakan rangka kerja Yii.
Sebelum menggunakan rangka kerja Yii, anda perlu memasang rangka kerja terlebih dahulu. Memasang rangka kerja Yii adalah sangat mudah, cuma laksanakan arahan berikut dalam terminal:
composer create-project yiisoft/yii2-app-basic
Perintah ini akan mencipta aplikasi Yii2 asas dalam direktori semasa. Kini anda sudah bersedia untuk mula membuat tapak web filem anda.
Rangka kerja Yii menyediakan ActiveRecord, satu cara untuk menjadikan pangkalan data operasi mudah. Dalam contoh ini, kami akan mencipta jadual data yang dipanggil filem, yang mengandungi maklumat seperti ID filem, tajuk, pengarah, pelakon, tahun, genre dan penilaian. Untuk mencipta jadual, pergi ke akar aplikasi dalam terminal dan jalankan arahan berikut:
php yii migrate/create create_movies_table
Kemudian edit fail migrasi yang dijana ke kandungan berikut:
<?php use yiidbMigration; /** * Handles the creation of table `{{%movies}}`. */ class m210630_050401_create_movies_table extends Migration { /** * {@inheritdoc} */ public function safeUp() { $this->createTable('{{%movies}}', [ 'id' => $this->primaryKey(), 'title' => $this->string()->notNull(), 'director' => $this->string()->notNull(), 'actors' => $this->text()->notNull(), 'year' => $this->integer()->notNull(), 'genre' => $this->string()->notNull(), 'rating' => $this->decimal(3,1)->notNull(), ]); } /** * {@inheritdoc} */ public function safeDown() { $this->dropTable('{{%movies}}'); } }
Sekarang jalankan migrasi untuk mencipta Lembaran Data filem.
php yii migrate
Dalam rangka kerja Yii, sangat mudah untuk menentukan model jadual data menggunakan ActiveRecord. Kita boleh mencipta model bernama Movie dalam direktori model dan menentukan nama jadual dan nama medan dalam definisi model.
<?php namespace appmodels; use yiidbActiveRecord; class Movie extends ActiveRecord { /** * {@inheritdoc} */ public static function tableName() { return '{{%movies}}'; } /** * {@inheritdoc} */ public function rules() { return [ [['title', 'director', 'actors', 'year', 'genre', 'rating'], 'required'], [['year'], 'integer'], [['rating'], 'number'], [['actors'], 'string'], [['title', 'director', 'genre'], 'string', 'max' => 255], ]; } /** * {@inheritdoc} */ public function attributeLabels() { return [ 'id' => 'ID', 'title' => 'Title', 'director' => 'Director', 'actors' => 'Actors', 'year' => 'Year', 'genre' => 'Genre', 'rating' => 'Rating' ]; } }
Pengawal filem akan bertanggungjawab untuk mengendalikan semua permintaan berkenaan filem, seperti permintaan untuk menambah, mengedit, memadam dan memaparkan senarai filem . Kita boleh mencipta pengawal bernama MovieController dalam direktori pengawal dan menambah kod berikut:
<?php namespace appcontrollers; use Yii; use yiiwebController; use appmodelsMovie; class MovieController extends Controller { /** * Shows all movies. * * @return string */ public function actionIndex() { $movies = Movie::find()->all(); return $this->render('index', ['movies' => $movies]); } /** * Creates a new movie. * * @return string|yiiwebResponse */ public function actionCreate() { $model = new Movie(); if ($model->load(Yii::$app->request->post()) && $model->save()) { return $this->redirect(['index']); } return $this->render('create', [ 'model' => $model, ]); } /** * Updates an existing movie. * * @param integer $id * @return string|yiiwebResponse * @throws yiiwebNotFoundHttpException */ public function actionUpdate($id) { $model = $this->findModel($id); if ($model->load(Yii::$app->request->post()) && $model->save()) { return $this->redirect(['index']); } return $this->render('update', [ 'model' => $model, ]); } /** * Deletes an existing movie. * * @param integer $id * @return yiiwebResponse * @throws yiiwebNotFoundHttpException */ public function actionDelete($id) { $this->findModel($id)->delete(); return $this->redirect(['index']); } /** * Finds the Movie model based on its primary key value. * If the model is not found, a 404 HTTP exception will be thrown. * * @param integer $id * @return ppmodelsMovie * @throws NotFoundHttpException if the model cannot be found */ protected function findModel($id) { if (($model = Movie::findOne($id)) !== null) { return $model; } throw new NotFoundHttpException('The requested page does not exist.'); } }
Antaranya, kaedah actionIndex akan memaparkan senarai semua filem, dan kaedah actionCreate dan actionUpdate akan digunakan untuk mencipta dan mengedit filem, Kaedah actionDelete akan memadamkan filem.
Seterusnya, kita perlu mencipta fail paparan untuk memaparkan senarai filem, menambah filem dan mengedit borang filem. Simpan fail paparan dalam direktori paparan/filem.
<?php use yiihelpersHtml; use yiigridGridView; /* @var $this yiiwebView */ /* @var $movies appmodelsMovie[] */ $this->title = 'Movies'; $this->params['breadcrumbs'][] = $this->title; ?> <h1><?= Html::encode($this->title) ?></h1> <p> <?= Html::a('Create Movie', ['create'], ['class' => 'btn btn-success']) ?> </p> <?= GridView::widget([ 'dataProvider' => new yiidataArrayDataProvider([ 'allModels' => $movies, 'sort' => [ 'attributes' => [ 'title', 'director', 'year', 'genre', 'rating', ], ], ]), 'columns' => [ ['class' => 'yiigridSerialColumn'], 'title', 'director', 'actors:ntext', 'year', 'genre', 'rating', ['class' => 'yiigridActionColumn'], ], ]); ?>
<?php use yiihelpersHtml; use yiiwidgetsActiveForm; /* @var $this yiiwebView */ /* @var $model appmodelsMovie */ $this->title = 'Create Movie'; $this->params['breadcrumbs'][] = ['label' => 'Movies', 'url' => ['index']]; $this->params['breadcrumbs'][] = $this->title; ?> <h1><?= Html::encode($this->title) ?></h1> <div class="movie-form"> <?php $form = ActiveForm::begin(); ?> <?= $form->field($model, 'title')->textInput(['maxlength' => true]) ?> <?= $form->field($model, 'director')->textInput(['maxlength' => true]) ?> <?= $form->field($model, 'actors')->textarea(['rows' => 6]) ?> <?= $form->field($model, 'year')->textInput() ?> <?= $form->field($model, 'genre')->textInput(['maxlength' => true]) ?> <?= $form->field($model, 'rating')->textInput() ?> <div class="form-group"> <?= Html::submitButton('Save', ['class' => 'btn btn-success']) ?> </div> <?php ActiveForm::end(); ?> </div>
<?php use yiihelpersHtml; use yiiwidgetsActiveForm; /* @var $this yiiwebView */ /* @var $model appmodelsMovie */ $this->title = 'Update Movie: ' . $model->title; $this->params['breadcrumbs'][] = ['label' => 'Movies', 'url' => ['index']]; $this->params['breadcrumbs'][] = ['label' => $model->title, 'url' => ['view', 'id' => $model->id]]; $this->params['breadcrumbs'][] = 'Update'; ?> <h1><?= Html::encode($this->title) ?></h1> <div class="movie-form"> <?php $form = ActiveForm::begin(); ?> <?= $form->field($model, 'title')->textInput(['maxlength' => true]) ?> <?= $form->field($model, 'director')->textInput(['maxlength' => true]) ?> <?= $form->field($model, 'actors')->textarea(['rows' => 6]) ?> <?= $form->field($model, 'year')->textInput() ?> <?= $form->field($model, 'genre')->textInput(['maxlength' => true]) ?> <?= $form->field($model, 'rating')->textInput() ?> <div class="form-group"> <?= Html::submitButton('Save', ['class' => 'btn btn-primary']) ?> </div> <?php ActiveForm::end(); ?> </div>
Sekarang kami telah menyelesaikan penciptaan laman web filem rangka kerja Yii , semua Kod semua sudah sedia. Untuk menjalankan tapak web filem secara tempatan, pergi ke direktori akar aplikasi dalam terminal dan laksanakan arahan berikut:
php yii serve
Ini akan memulakan pelayan web tempatan dan menjalankan aplikasi anda pada port 8000. Sekarang, anda boleh membuka http://localhost:8000/ dalam penyemak imbas anda dan melihat tapak web filem anda.
Dalam artikel ini, kami telah menunjukkan cara membuat tapak web filem menggunakan rangka kerja Yii. Menggunakan rangka kerja Yii akan mempercepatkan pembangunan anda dan menyediakan banyak ciri berguna, seperti ActiveRecord, seni bina MVC, pengesahan borang, keselamatan dan banyak lagi. Untuk mengetahui lebih lanjut tentang rangka kerja Yii, lihat dokumentasinya.
Atas ialah kandungan terperinci Buat tapak web filem menggunakan rangka kerja Yii. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!