Heim  >  Artikel  >  Backend-Entwicklung  >  Wie verwende ich Blade mit CakePHP?

Wie verwende ich Blade mit CakePHP?

WBOY
WBOYOriginal
2023-06-04 10:01:461416Durchsuche

CakePHP ist ein beliebtes PHP-MVC-Framework und Blade ist eine der sehr beliebten Template-Engines im Laravel-Framework. Obwohl CakePHP über eine leistungsstarke Template-Engine verfügt, möchten wir manchmal andere Template-Engines verwenden, um die Standard-Template-Engine zu ersetzen.

In diesem Artikel werde ich die Verwendung der Blade-Vorlagen-Engine in CakePHP 3 vorstellen und hoffe, einigen Entwicklern zu helfen, die Blade ausprobieren möchten.

  1. Blade installieren

Zuerst müssen wir Blade installieren, was über Composer erfolgen kann. Fügen Sie Abhängigkeiten zur Datei „composer.json“ im Stammverzeichnis des Projekts hinzu:

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

Führen Sie dann den Befehl composer update im Terminal aus, um die Abhängigkeiten zu installieren.

  1. CakePHP konfigurieren

Als nächstes müssen wir CakePHP für die Verwendung der Blade-Template-Engine konfigurieren. Fügen Sie zunächst den folgenden Code in die Datei config/app.php ein:

'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
            ]
        ]
    ]
]

In diesem Konfigurationsarray geben wir die Ansichtskonfiguration von CakePHP an und fügen eine Template-Engine mit dem Namen „Blade“ hinzu. In den Optionen von Blade geben wir den Cache-Pfad, den Ansichtspfad und ob die Vorlage automatisch neu geladen werden soll.

Als nächstes müssen wir eine Datei hinzufügen, um die Blade-Engine in src/View/BladeEngine.php zu definieren.

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

In dieser Klasse definieren wir eine BladeEngine-Klasse, die von der Engine-Klasse in CakePHP erbt. Im Konstruktor lesen wir den Ansichtspfad mithilfe der Konfiguration von CakePHP und übergeben ihn an den Konstruktor von Blade, damit Blade die Vorlagendatei finden kann. Darüber hinaus haben wir Cache-Pfade hinzugefügt, um die Leistung zu verbessern. In der Renderfunktion verwenden wir die Factory-Klasse von Blade, um die Vorlage zu rendern.

  1. Erstellen Sie die Vorlagendatei

Da wir nun mit der Konfiguration und Definition der Blade-Engine fertig sind, beginnen wir mit dem Schreiben der Vorlagendatei. In CakePHP können wir Vorlagendateien im Verzeichnis src/Template/ erstellen.

Zum Beispiel können wir eine einfache Blade-Vorlage in src/Template/Pages/home.blade.php erstellen:

@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

In dieser Vorlage verwenden wir @extends, um das zu verwendende Layout anzugeben. Der Inhalt zwischen @section und @endsection wird in die @yield('content')-Direktive des Layouts eingefügt.

  1. Vorlagen rendern

Jetzt können wir die Vorlage im Controller rendern, indem wir die Blade-Engine aufrufen. Fügen Sie beispielsweise den folgenden Code in PagesController hinzu:

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

Bevor wir die Vorlage rendern, müssen wir die verwendete Ansichtsklasse angeben. Anschließend übergeben wir die Daten an die Ansicht und geben den Namen der zu ladenden Vorlagendatei an.

  1. Führen Sie den Test durch

Jetzt können wir die Seite im Browser besuchen, um zu sehen, ob Blade ordnungsgemäß funktioniert. Geben Sie den Dateinamen in die Adressleiste ein, z. B. http://localhost/cake_blade/pages/home, und Sie sollten die gerade geschriebene Blade-Vorlage sehen, die mit dem übereinstimmt, was wir in der Vorlagendatei definiert haben.

Zusammenfassung

In diesem Artikel haben wir vorgestellt, wie Sie die Blade-Vorlagen-Engine in CakePHP 3 verwenden, um die Standard-Vorlagen-Engine zu ersetzen. Auf diese Weise können wir Webanwendungen mithilfe der leistungsstarken Syntax und Funktionen von Blade entwickeln. Wenn Sie nach einer funktionsreichen Template-Engine suchen, ist Blade eine gute Wahl.

Das obige ist der detaillierte Inhalt vonWie verwende ich Blade mit CakePHP?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn