HTML Skatījumi un veidnes

Flight pēc noklusējuma nodrošina dažas pamata veidņu funkcionalitātes.

Flight ļauj jums aizstāt noklusējuma skatījumu dzinēju, vienkārši reģistrējot savu skatu klasi. Ritiniet lejup, lai redzētu piemērus par to, kā izmantot Smarty, Latte, Blade un citus!

Iebūvēts Skatījumu Dzinējs

Lai parādītu skata veidni, izsauciet render metodi ar veidņu faila nosaukumu un opciju veidņu datiem:

Flight::render('hello.php', ['name' => 'Bob']);

Veidņu dati, kurus jūs nododat, automātiski tiek injicēti veidnē un var būt atsaucami kā vietējā mainīgā. Veidņu faili ir vienkārši PHP faili. Ja hello.php veidnes faila saturs ir:

Hello, <?= $name ?>!

Izeja būtu:

Hello, Bob!

Jūs arī varat manuāli iestatīt skata mainīgos, izmantojot set metodi:

Flight::view()->set('name', 'Bob');

Mainīgais name tagad ir pieejams visos jūsu skatījumos. Tātad jūs varat vienkārši darīt:

Flight::render('hello');

Ņemiet vērā, ka, nosakot veidnes nosaukumu render metodi, jūs varat izlaist .php paplašinājumu.

Noklusējuma Flight meklēs views direktorijā veidņu failus. Jūs varat iestatīt alternatīvu ceļu savām veidnēm, iestatot sekojošo konfigurāciju:

Flight::set('flight.views.path', '/path/to/views');

Izkārtojumi

Ir ierasti, ka vietnēm ir viens izkārtojuma veidnes fails ar mainīgu saturu. Lai attēlotu saturu, kas tiks izmantots izkārtojumā, varat nodot opciju parametru render metodei.

Flight::render('header', ['heading' => 'Hello'], 'headerContent');
Flight::render('body', ['body' => 'World'], 'bodyContent');

Jūsu skatījumā tad būs saglabāti mainīgie, kuri saucas headerContent un bodyContent. Tad varat renderēt savu izkārtojumu darot:

Flight::render('layout', ['title' => 'Home Page']);

Ja veidņu faili izskatās šādi:

header.php:

<h1><?= $heading ?></h1>

body.php:

<div><?= $body ?></div>

layout.php:

<html>
  <head>
    <title><?= $title ?></title>
  </head>
  <body>
    <?= $headerContent ?>
    <?= $bodyContent ?>
  </body>
</html>

Izeja būtu:

<html>
  <head>
    <title>Home Page</title>
  </head>
  <body>
    <h1>Hello</h1>
    <div>World</div>
  </body>
</html>

Smarty

Šeit ir kā jūs varat izmantot Smarty veidņu dzinēju saviem skatījumiem:

// Ielādējiet Smarty bibliotēku
require './Smarty/libs/Smarty.class.php';

// Reģistrējiet Smarty kā skata klasi
// Tāpat nododiet atgriezenisko izsaukumu funkciju, lai konfigurētu Smarty ielādēšanas laikā
Flight::register('view', Smarty::class, [], function (Smarty $smarty) {
  $smarty->setTemplateDir('./templates/');
  $smarty->setCompileDir('./templates_c/');
  $smarty->setConfigDir('./config/');
  $smarty->setCacheDir('./cache/');
});

// Piešķiriet veidņu datus
Flight::view()->assign('name', 'Bob');

// Parādiet veidni
Flight::view()->display('hello.tpl');

Lai pabeigtu, jums arī vajadzētu pārrakstīt Flight noklusējuma render metodi:

Flight::map('render', function(string $template, array $data): void {
  Flight::view()->assign($data);
  Flight::view()->display($template);
});

Latte

Šeit ir kā jūs varat izmantot Latte veidņu dzinēju saviem skatījumiem:

// Reģistrējiet Latte kā skata klasi
// Tāpat nododiet atgriezenisko izsaukumu funkciju, lai konfigurētu Latte ielādēšanas laikā
Flight::register('view', Latte\Engine::class, [], function (Latte\Engine $latte) {
  // Šeit Latte saglabās jūsu veidnes, lai paātrinātu lietas
    // Viens interesants aspekts par Latte ir tas, ka tas automātiski atjauno jūsu
    // kešatmiņu, kad jūs veicat izmaiņas savās veidnēs!
    $latte->setTempDirectory(__DIR__ . '/../cache/');

    // Paziņojiet Latte, kur būs jūsu skatījumu saknes direktorija.
    $latte->setLoader(new \Latte\Loaders\FileLoader(__DIR__ . '/../views/'));
});

// Un apkopojiet to, lai jūs varētu izmantot Flight::render() pareizi
Flight::map('render', function(string $template, array $data): void {
  // Tas ir līdzīgu $latte_engine->render($template, $data);
  echo Flight::view()->render($template, $data);
});

Blade

Šeit ir kā jūs varat izmantot Blade veidņu dzinēju saviem skatījumiem:

Vispirms jums jāinstalē BladeOne bibliotēka, izmantojot Composer:

composer require eftec/bladeone

Tad jūs varat konfigurēt BladeOne kā skata klasi Flight:

<?php
// Ielādējiet BladeOne bibliotēku
use eftec\bladeone\BladeOne;

// Reģistrējiet BladeOne kā skata klasi
// Tāpat nododiet atgriezenisko izsaukumu funkciju, lai konfigurētu BladeOne ielādēšanas laikā
Flight::register('view', BladeOne::class, [], function (BladeOne $blade) {
  $views = __DIR__ . '/../views';
  $cache = __DIR__ . '/../cache';

  $blade->setPath($views);
  $blade->setCompiledPath($cache);
});

// Piešķiriet veidņu datus
Flight::view()->share('name', 'Bob');

// Parādiet veidni
echo Flight::view()->run('hello', []);

Lai pabeigtu, jums arī vajadzētu pārrakstīt Flight noklusējuma render metodi:

<?php
Flight::map('render', function(string $template, array $data): void {
  echo Flight::view()->run($template, $data);
});

Šajā piemēru hello.blade.php veidnes fails varētu izskatīties šādi:

<?php
Hello, {{ $name }}!

Izeja būtu:

Hello, Bob!

Ievērojot šos soļus, jūs varat integrēt Blade veidņu dzinēju ar Flight un izmantot to, lai renderētu savus skatījumus.