Maison >cadre php >YII >Créer un site Web de film en utilisant le framework Yii

Créer un site Web de film en utilisant le framework Yii

WBOY
WBOYoriginal
2023-06-21 09:04:321520parcourir

Avec la popularité d'Internet et l'amour des gens pour les films, les sites Web de films sont devenus un type de site Web populaire. Lors de la création d’un site Web de cinéma, un bon framework est indispensable. Le framework Yii est un framework PHP hautes performances, facile à utiliser et offrant d'excellentes performances. Dans cet article, nous explorerons comment créer un site Web de films à l'aide du framework Yii.

  1. Installer le framework Yii

Avant d'utiliser le framework Yii, vous devez d'abord installer le framework. L'installation du framework Yii est très simple, il suffit d'exécuter la commande suivante dans le terminal :

composer create-project yiisoft/yii2-app-basic

Cette commande créera une application Yii2 de base dans le répertoire courant. Vous êtes maintenant prêt à commencer à créer votre site Web de film.

  1. Créer des bases de données et des tables

Le framework Yii fournit ActiveRecord, un moyen de faciliter le travail avec les bases de données. Dans cet exemple, nous allons créer une table de données appelée films, qui contient des informations telles que l'identifiant du film, le titre, le réalisateur, l'acteur, l'année, le genre et la note. Pour créer la table, accédez au répertoire racine de l'application dans le terminal et exécutez la commande suivante :

php yii migrate/create create_movies_table

Modifiez ensuite le fichier de migration généré avec le contenu suivant :

<?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}}');
    }
}

Exécutez maintenant la migration pour créer la table de données des films.

php yii migrate
  1. Créer un modèle de film

Dans le framework Yii, il est très simple de définir le modèle de la table de données à l'aide d'ActiveRecord. Nous pouvons créer un modèle nommé Movie dans le répertoire models et spécifier le nom de la table et le nom du champ dans la définition du modèle.

<?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'
        ];
    }
}
  1. Créer un contrôleur de film

Le contrôleur de film sera responsable du traitement de toutes les demandes concernant les films, telles que les demandes d'ajout, de modification, de suppression et d'affichage de la liste de films. Nous pouvons créer un contrôleur nommé MovieController dans le répertoire des contrôleurs et ajouter le code suivant :

<?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.');
    }
}

Parmi eux, la méthode actionIndex affichera la liste de tous les films, les méthodes actionCreate et actionUpdate seront utilisées pour créer et éditer des films, et le La méthode actionDelete supprimera le film.

  1. Créer une vue de film

Ensuite, nous devons créer le fichier de vue pour afficher la liste des films, ajouter un film et modifier les formulaires de film. Stockez les fichiers de vue dans le répertoire vues/movie.

  • index.php - pour afficher la liste des films
<?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'],
    ],
]); ?>
  • create.php - pour créer de nouveaux films
<?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>
  • update.php - pour éditer des films
<?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>
  1. exécuter un site Web de films

Maintenant, nous avons j'ai fini de créer le site Web du film Yii framework et tout le code est en place. Pour exécuter un site Web de film localement, accédez au répertoire racine de l'application dans le terminal et exécutez la commande suivante :

php yii serve

Cela démarrera un serveur Web local et exécutera votre application sur le port 8000. Maintenant, vous pouvez ouvrir http://localhost:8000/ dans votre navigateur et voir le site Web de votre film.

Dans cet article, nous avons montré comment créer un site Web de film à l'aide du framework Yii. L'utilisation du framework Yii accélérera votre développement et fournira de nombreuses fonctionnalités utiles, telles qu'ActiveRecord, l'architecture MVC, la validation de formulaire, la sécurité, etc. Pour en savoir plus sur le framework Yii, consultez sa documentation.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn