Maison  >  Article  >  développement back-end  >  Comment utiliser Blade avec CakePHP ?

Comment utiliser Blade avec CakePHP ?

WBOY
WBOYoriginal
2023-06-04 10:01:461470parcourir

CakePHP est un framework PHP MVC populaire, et Blade est l'un des moteurs de modèles les plus populaires du framework Laravel. Bien que CakePHP soit livré avec un moteur de modèles puissant, nous pouvons parfois souhaiter utiliser d'autres moteurs de modèles pour remplacer celui par défaut.

Dans cet article, je vais vous présenter comment utiliser le moteur de modèles Blade dans CakePHP 3, dans l'espoir d'aider certains développeurs qui souhaitent essayer Blade.

  1. Installer Blade

Tout d'abord, nous devons installer Blade, ce qui peut être fait via Composer. Ajoutez des dépendances au fichier composer.json dans le répertoire racine du projet :

{
    "require": {
        "illuminate/view": "5.8.*"
    }
}

Exécutez ensuite la commande composer update dans le terminal pour installer les dépendances.

  1. Configuration de CakePHP

Ensuite, nous devons configurer CakePHP pour utiliser le moteur de modèles Blade. Tout d'abord, ajoutez le code suivant au fichier config/app.php :

'View' => [
    'className' => 'CakeViewView',
    'viewPath' => APP . 'Template/',
    'layoutPath' => APP . 'Template/Layout/',
    'templatePath' => APP . 'Template/',
    'cachePath' => CACHE . 'views/',
    'helpers' => [
        'Html',
        'Form',
        'Url'
    ],
    'useRenderCache' => false,
    'engine' => [
        'Blade' => [
            'className' => 'CakeBladeBladeEngine',
            'options' => [
                'cache_path' => TMP . 'blade_cache',
                'view_path' => APP . 'Template/',
                'auto_reload' => true
            ]
        ]
    ]
]

Dans ce tableau de configuration, nous spécifions la configuration de la vue de CakePHP et ajoutons un moteur de modèle nommé "Blade". Dans les options de Blade, nous spécifions le chemin du cache, le chemin de la vue et s'il faut recharger automatiquement le modèle.

Ensuite, nous devons ajouter un fichier pour définir le moteur Blade dans src/View/BladeEngine.php.

<?php
namespace CakeBlade;

use CakeViewEngineEngine;
use IlluminateViewCompilersBladeCompiler;
use IlluminateViewEnginesCompilerEngine;
use IlluminateViewFactory;
use IlluminateViewFileViewFinder;

class BladeEngine extends Engine
{
    public $Factory;

    public function __construct($view = null, $layout = null)
    {
        parent::__construct($view, $layout);

        $config = CakeCoreConfigure::read('App');
        $viewPath = $config['Template']['templatePath'];
        $cachePath = $config['engine']['Blade']['options']['cache_path'];

        $this->Factory = new Factory(new FileViewFinder([$viewPath]), new CompilerEngine(new BladeCompiler(new Filesystem, $cachePath)));
    }

    public function render($template, $layout = null)
    {
        return $this->Factory->make($template, compact('data'))->render();
    }
}

Dans cette classe, nous définissons une classe BladeEngine, qui hérite de la classe Engine dans CakePHP. Dans le constructeur, nous lisons le chemin de la vue en utilisant la configuration de CakePHP et le transmettons au constructeur de Blade afin que Blade puisse trouver le fichier modèle. De plus, nous avons ajouté des chemins de cache pour améliorer les performances. Dans la fonction de rendu, nous utilisons la classe Blade's Factory pour restituer le modèle.

  1. Créer un fichier modèle

Maintenant que nous avons terminé le travail de configuration et de définition du moteur Blade, nous pouvons commencer à écrire le fichier modèle. Dans CakePHP, nous pouvons créer des fichiers modèles dans le répertoire src/Template/.

Par exemple, nous pouvons créer un modèle Blade simple dans src/Template/Pages/home.blade.php :

@extends('Layout.default')

@section('content')
<div class="jumbotron">
  <h1>Welcome to CakeBlade</h1>
  <p>CakePHP 3 + Blade Template Engine.</p>
  <p><a class="btn btn-primary btn-lg" href="#" role="button">Learn more</a></p>
</div>
@endsection

Dans ce modèle, nous utilisons @extends Spécifie le mise en page à utiliser. Le contenu entre @section et @endsection sera inséré dans la directive @yield('content') de la mise en page.

  1. Modèle de rendu

Maintenant, nous pouvons restituer le modèle dans le contrôleur en appelant le moteur Blade. Par exemple, ajoutez le code suivant dans PagesController :

public function home()
{
    $this->getViewBuilder()->setClassName('CakeBlade.Blade');
    $this->set(compact('data'));
    $this->render('home');
}

Avant de rendre le modèle, nous devons spécifier la classe de vue utilisée. Nous transmettons ensuite les données à la vue et spécifions le nom du fichier modèle à charger.

  1. Faire le test

Maintenant, nous pouvons visiter la page dans le navigateur pour voir si Blade fonctionne correctement. Entrez le nom du fichier dans la barre d'adresse, par exemple http://localhost/cake_blade/pages/home, et vous devriez voir le modèle Blade que vous venez d'écrire, qui est le même que celui que nous avons défini dans le fichier modèle.

Résumé

Dans cet article, nous avons présenté comment utiliser le moteur de modèles Blade dans CakePHP 3 pour remplacer le moteur de modèles par défaut. De cette manière, nous pouvons développer des applications Web en utilisant la puissante syntaxe et les fonctionnalités fournies par Blade. Si vous recherchez un moteur de modèles riche en fonctionnalités, Blade est un bon choix.

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