Heim >PHP-Framework >YII >Erstellen Sie eine Film-Website mit dem Yii-Framework
Mit der Popularität des Internets und der Liebe der Menschen zu Filmen sind Film-Websites zu einem beliebten Website-Typ geworden. Beim Erstellen einer Film-Website ist ein gutes Framework unbedingt erforderlich. Das Yii-Framework ist ein leistungsstarkes PHP-Framework, das einfach zu verwenden ist und eine hervorragende Leistung bietet. In diesem Artikel erfahren Sie, wie Sie mit dem Yii-Framework eine Film-Website erstellen.
Bevor Sie das Yii-Framework verwenden, müssen Sie es zuerst installieren. Die Installation des Yii-Frameworks ist sehr einfach. Führen Sie einfach den folgenden Befehl im Terminal aus:
composer create-project yiisoft/yii2-app-basic
Dieser Befehl erstellt eine grundlegende Yii2-Anwendung im aktuellen Verzeichnis. Jetzt können Sie mit der Erstellung Ihrer Film-Website beginnen.
Das Yii-Framework bietet ActiveRecord, eine Möglichkeit, die Arbeit mit Datenbanken zu vereinfachen. In diesem Beispiel erstellen wir eine Datentabelle namens „Filme“, die Informationen wie Film-ID, Titel, Regisseur, Schauspieler, Jahr, Genre und Bewertung enthält. Um die Tabelle zu erstellen, gehen Sie im Terminal zum Stammverzeichnis der Anwendung und führen Sie den folgenden Befehl aus:
php yii migrate/create create_movies_table
Bearbeiten Sie dann die generierte Migrationsdatei mit folgendem Inhalt:
<?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}}'); } }
Führen Sie nun die Migration aus, um die Filmdatentabelle zu erstellen.
php yii migrate
Im Yii-Framework ist es sehr einfach, das Modell der Datentabelle mithilfe von ActiveRecord zu definieren. Wir können im Modellverzeichnis ein Modell mit dem Namen „Movie“ erstellen und den Tabellennamen und den Feldnamen in der Modelldefinition angeben.
<?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' ]; } }
Der Filmcontroller ist für die Bearbeitung aller Anfragen bezüglich Filmen verantwortlich, z. B. Anfragen zum Hinzufügen, Bearbeiten, Löschen und Anzeigen einer Filmliste. Wir können einen Controller namens MovieController im Controller-Verzeichnis erstellen und den folgenden Code hinzufügen:
<?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.'); } }
Darunter zeigt die Methode actionIndex die Liste aller Filme an, die Methoden actionCreate und actionUpdate werden zum Erstellen und Bearbeiten von Filmen verwendet und die Die actionDelete-Methode löscht den Film.
Als nächstes müssen wir die Ansichtsdatei erstellen, um die Filmliste anzuzeigen, Filme hinzuzufügen und Filmformen zu bearbeiten. Speichern Sie Ansichtsdateien im Verzeichnis „views/movie“. „index.php“ – zum Anzeigen der Filmliste habe Die Erstellung der Yii-Framework-Filmwebsite ist abgeschlossen und der gesamte Code ist vorhanden. Um eine Filmwebsite lokal auszuführen, gehen Sie im Terminal zum Stammverzeichnis der Anwendung und führen Sie den folgenden Befehl aus:
<?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'], ], ]); ?>
Das obige ist der detaillierte Inhalt vonErstellen Sie eine Film-Website mit dem Yii-Framework. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!