Maison  >  Article  >  cadre php  >  Qu'est-ce qu'un modèle Blade ?

Qu'est-ce qu'un modèle Blade ?

coldplay.xixi
coldplay.xixioriginal
2020-07-02 10:55:483300parcourir

Le modèle Blade est un moteur de modèle fourni par Laravel. Il est simple et puissant. Blade permet l'utilisation de code PHP natif dans la vue. Laravel utilise le fichier cache compilé au lieu de la vue elle-même. utile pour l’application. Il n’y a aucune surcharge.

Qu'est-ce qu'un modèle Blade ?

Le modèle Blade est :

Blade est un moteur de modèle fourni par Laravel, il est simple et puissant. Contrairement aux autres moteurs de modèles PHP, Blade permet l'utilisation de code PHP natif dans les vues.

En fait, toutes les vues Blade seront éventuellement compilées en code PHP natif et mises en cache dans le dossier storage/framework/views .

Laravel utilise ces fichiers de cache compilés, pas les vues elles-mêmes, donc Blade n'a aucune surcharge pour l'application. Lorsque vous modifiez un fichier de vue, il est recompilé et mis en cache pour être utilisé. Les vues blade ont un suffixe blade.php et sont généralement stockées dans le dossier resources/views.

Héritage de modèles :

1. Définir les fichiers de mise en page

Les deux principaux avantages du moteur de modèles Blade sont "l'héritage de modèles". " " et " Bloquer ". Pour donner un exemple simple, dans un projet, presque toutes les pages ont la même mise en page. À ce stade, cette mise en page peut être extraite et utilisée comme page maître. Toutes les pages qui héritent de cette page maître auront le même effet de mise en page. une page enfant de la page maître. La page maître est également appelée fichier de mise en page, et le fichier de mise en page est une vue Blade :

<!-- Stored in resources/views/layouts/app.blade.php -->
<html>
       <head>
             <title>App Name - @yield(&#39;title&#39;)</title>
       </head>
       <body>
         @section(&#39;sidebar&#39;)
               This is the master sidebar.
         @show
         <div class="container">
              @yield(&#39;content&#39;)
         </div>
       <body>
</html>

En plus des balises HTNL de base, le fichier de mise en page utilise également deux instructions : @section et @yield. @section définit le bloc et @yield définit le contenu du bloc.

Ci-dessous. pour définir les sous-pages du fichier de mise en page.

2. Héritez du fichier de mise en page

Dans la sous-page, utilisez la directive @extends de Blade pour spécifier le fichier de mise en page « hérité » et utilisez la directive @section pour spécifier le fichier de mise en page "hérité" dans le fichier de mise en page. Injectez le contenu là où les directives @section et @yield sont utilisées :

<!-- Stored in resources/views/child.blade.php -->
@extends(&#39;layouts.app&#39;)
@section(&#39;title&#39;,&#39;Page Title&#39;)
@section(&#39;sidebar&#39;)
       <p> This is appended to the master sideebar</p>
@endsection
@section(&#39;content&#39;)
         <p>This ismy body content. </p>
@endsection

Vous pouvez voir que là où la directive @yield est utilisée dans le fichier de mise en page, @section est toujours utilisé pour injecter du contenu dans la sous-page ; dans le fichier de mise en page, utilisez L'un des avantages de la définition de la directive @section est que lorsque vous utilisez l'injection @section dans des pages enfants, vous pouvez utiliser la directive @parent pour ajouter (plutôt que d'écraser) le contenu. dans le fichier de mise en page où la directive @yield est utilisée dans le fichier de mise en page. Cela ne peut pas être fait. La directive @parent sera remplacée par le contenu du fichier de mise en page lors du rendu de la vue.

Notez que, contrairement à la barre latérale définie dans la présentation du fichier, la sous-page se termine par @endsection au lieu de @show. Parce que @endsection n'est utilisé que pour définir des blocs, et @show est utilisé pour définir et générer immédiatement des blocs.

Pour renvoyer le fichier de vue directement depuis l'itinéraire, vous devez utiliser l'assistant de fonction auxiliaire globale :

Route::get(&#39;blade&#39;, function(){
        return view(&#39;child&#39;);
})

3. Composants et emplacements Les emplacements offrent des avantages similaires aux dispositions et aux blocs. Le modèle mental des composants et des emplacements est plus intuitif. Imaginez que nous ayons un composant "pop-up" répétable dans notre projet :

<!-- Stored resource/views/alter.blade.php -->
<div class="alter alter-danger">
       {{ $slot }}
</div>

représente le contenu du composant inséré. Pour construire ce composant, utilisez la directive @component de Blade :

@component(&#39;alter&#39;)
        <strong>Whoops!</strong> Something went wrong!
@endcomponent

Dans ce scénario, le contenu de la variable {{ $slot }} est :

<strong>Whoops! </strong> Something went wrong!

Parfois, un composant nécessite plusieurs emplacements. À ce stade, il vous suffit de modifier légèrement le code du composant et de définir un emplacement « titre », appelé emplacement nommé. Les emplacements nommés affichent le contenu en "imprimant" simplement la variable correspondant à son nom : {{ $slot }}

<!-- Stored resources/views/alter.blade.php-->
<div class="alter alter-danger">
         <div class="alter-title">{{ $title }}</div>
            {{ $slot }}
</div>

Pour injecter du contenu dans un emplacement nommé, utilisez la directive @slot. Tout le contenu ne figurant pas dans la directive @slot sera transmis à la variable

du composant.

@compontent (&#39;alter&#39;)
         @slot(&#39;title&#39;)
            Forbidden
         @endslot
     You are not allowed to access this resource!
@edcompontent~

$slot 4. Transmettre des données supplémentaires pour les composants :

Parfois, il est nécessaire de transmettre des données supplémentaires pour les composants. Pour ce faire, vous pouvez passer un deuxième argument de tableau à la directive @conponent. Spécifiez les extras à passer. Toutes les données supplémentaires passées peuvent être utilisées comme variables dans le modèle de composant :

@component
     <compontent(&#39;alter&#39;, [&#39;foo&#39; => &#39;bar&#39;);
         .....
@endCompontent

5. Afficher les données

transmet les données à la vue Blade en passant La variable est enveloppée dans  :

Route::get(&#39;greeting&#39;, function(){
         return view(&#39;welcome&#39;, [ &#39;name&#39; => &#39;&#39;Samantha&#39;]);
})

Vous pouvez utiliser la variable name pour afficher le contenu : [ ]

Hello! {{ $name }}

est l'instruction print de la vue Blade. Bien sûr, l'instruction print ne le fait pas. se limite à l'impression de contenus variables, et les fonctions PHP peuvent également être utilisées. En fait, n'importe quel code PHP peut être utilisé dans l'instruction print :

The current UNIX timestamp is {{ time() }}

{{ }} 6. Afficher les données non transférées

Par défaut, tout le contenu est passé au L'instruction sera utilisée

Traitement des fonctions, échappement du contenu pour éviter les attaques XSS. S'il n'est pas nécessaire d'échapper au contenu de sortie, vous pouvez utiliser la syntaxe suivante :

Hello! {{!! $name !!}}.
Blade {{ }} Cependant, soyez prudent et vous devez donner la priorité à l'utilisation de la syntaxe htmlspecialchar échappée pour éviter les attaques XXS. Parce qu’il est parfois difficile d’éviter la saisie intentionnelle ou non de données par les utilisateurs.

{{ }} Recommandations d'apprentissage associées :

Laravel

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