Yii - Vues

Les vues sont chargées de présenter les données aux utilisateurs finaux. Dans les applications Web,Views ne sont que des fichiers de script PHP contenant du code HTML et PHP.

Créer des vues

Step 1 - Jetons un coup d'œil à la ‘About’ vue du modèle d'application de base.

<?php
   /* @var $this yii\web\View */ use yii\helpers\Html; $this->title = 'About';
   $this->params['breadcrumbs'][] = $this->title;
?>
<div class="site-about">
   <h1><?= Html::encode($this->title) ?></h1>
   <p>
      This is the About page. You may modify the following file to customize its content:
   </p>
   <code><?= __FILE__ ?></code>
</div>

le $this variable fait référence au composant de vue qui gère et rend ce modèle de vue.

C'est ainsi que le ‘About’ la page ressemble à -

Il est important d'encoder et / ou de filtrer les données provenant de l'utilisateur final afin d'éviter les attaques XSS. Vous devez toujours encoder un texte brut en appelantyii\helpers\Html::encode() et du contenu HTML en appelant yii\helpers\HtmlPurifier.

Step 2 - Modifier le ‘About’ Voir de la manière suivante.

<?php
   /* @var $this yii\web\View */ use yii\helpers\Html; use yii\helpers\HtmlPurifier; $this->title = 'About';
   $this->params['breadcrumbs'][] = $this->title;
?>
<div class="site-about">
   <h1><?= Html::encode($this->title) ?></h1>
   <p>
      This is the About page. You may modify the following file to customize its content:
   </p>
   <p>
      <?= Html::encode("<script>alert('alert!');</script><h1>ENCODE EXAMPLE</h1>>") ?>
   </p>
   <p>
      <?= HtmlPurifier::process("<script>alert('alert!');</script><h1> HtmlPurifier EXAMPLE</h1>") ?>
   </p>
   <code><?= __FILE__ ?></code>
</div>

Step 3 - Tapez maintenant http://localhost:8080/index.php?r=site/about. Vous verrez l'écran suivant.

Notez que le code javascript à l'intérieur du Html::encode()La fonction est affichée sous forme de texte brut. La même chose est pourHtmlPurifier::process()appel. Seule la balise h1 est affichée.

Les vues suivent ces conventions -

  • Les vues, qui sont rendues par un contrôleur, doivent être placées dans le @app/views/controllerID dossier.

  • Les vues, qui sont rendues dans un widget, doivent être placées dans le widgetPath/views folder.

Pour rendre un view within a controller, vous pouvez utiliser les méthodes suivantes -

  • render() - Rend une vue et applique une mise en page.

  • renderPartial() - Rend une vue sans mise en page.

  • renderAjax() - Rend une vue sans mise en page, mais injecte tous les fichiers js et css enregistrés.

  • renderFile() - Rend une vue dans un chemin de fichier ou un alias donné.

  • renderContent() - Rend une chaîne statique et applique une mise en page.

Pour rendre un view within another view, vous pouvez utiliser les méthodes suivantes -

  • render() - Rend une vue.

  • renderAjax() - Rend une vue sans mise en page, mais injecte tous les fichiers js et css enregistrés.

  • renderFile() - Rend une vue dans un chemin de fichier ou un alias donné.

Step 4 - Dans le dossier views / site, créez deux fichiers de vue: _part1.php and _part2.php.

_part1.php -

<h1>PART 1</h1>

_part2.php -

<h1>PART 2</h1>

Step 5 - Enfin, effectuez le rendu de ces deux vues nouvellement créées dans le ‘About’ Vue.

<?php
   /* @var $this yii\web\View */
   use yii\helpers\Html;
   $this->title = 'About'; $this->params['breadcrumbs'][] = $this->title; ?> <div class="site-about"> <h1><?= Html::encode($this->title) ?></h1>
   <p>
      This is the About page. You may modify the following file to customize its content:
   </p>
   <?= $this->render("_part1") ?> <?= $this->render("_part2") ?>
   <code><?= __FILE__ ?></code>
</div>

Vous verrez la sortie suivante -

Lors du rendu d'une vue, vous pouvez définir la vue en utilisant comme nom de vue ou comme chemin / alias de fichier de vue. Un nom de vue est résolu de la manière suivante -

  • Un nom de vue peut omettre l'extension. Par exemple, la vue about correspond au fichier about.php.

  • Si le nom de la vue commence par «/», alors si le module actuellement actif est forum, et que le nom de la vue est comment / post, le chemin serait @ app / modules / forum / views / comment / post. S'il n'y a pas de module actif, le chemin serait @ app / views / comment / post.

  • Si le nom de la vue commence par «//», le chemin correspondant serait @ app / views / ViewName. Par exemple, // site / contact correspond à @ app / views / site / contact.php.

  • Si le nom de la vue est contact et que le contrôleur de contexte est SiteController, le chemin serait @ app / views / site / contact.php.

  • Si la vue des prix est rendue dans la vue des marchandises, le prix sera résolu comme @ app / views / facture / price.php s'il est rendu dans le @ app / views / facture / goods.php.

Accès aux données dans les vues

Pour accéder aux données dans une vue, vous devez transmettre les données en tant que deuxième paramètre à la méthode de rendu de vue.

Step 1 - Modifier le actionAbout du SiteController.

public function actionAbout() {
   $email = "[email protected]"; $phone = "+78007898100";
   return $this->render('about',[ 'email' => $email,
      'phone' => $phone
   ]);
}

Dans le code donné ci-dessus, on passe deux variables $email et $phone rendre dans le About vue.

Step 2 - Modifiez le code de vue à propos.

<?php
   /* @var $this yii\web\View */
   use yii\helpers\Html;
   $this->title = 'About'; $this->params['breadcrumbs'][] = $this->title; ?> <div class = "site-about"> <h1><?= Html::encode($this->title) ?></h1>
   <p>
      This is the About page. You may modify the following file to customize its content:
   </p>
   <p>
      <b>email:</b> <?= $email ?> </p> <p> <b>phone:</b> <?= $phone ?>
   </p>
   <code><?= __FILE__ ?></code>
</div>

Nous venons d'ajouter deux variables que nous avons reçues du SiteController.

Step 3 - Tapez l'URL http://localhost:8080/index.php?r=site/about dans le navigateur Web, vous verrez ce qui suit.