HTML Skati un Veidnes
Pārskats
Flight nodrošina dažas pamata HTML veidņu funkcionalitātes pēc noklusējuma. Veidņošana ir ļoti efektīvs veids, kā atdalīt jūsu lietojumprogrammas loģiku no jūsu prezentācijas slāņa.
Saprašana
Kad jūs būvējat lietojumprogrammu, jums, visticamāk, būs HTML, ko vēlaties nodot atpakaļ gala lietotājam. PHP pats par sevi ir veidņu valoda, bet ir ļoti viegli iekļaut biznesa loģiku, piemēram, datubāzes izsaukumus, API izsaukumus utt., jūsu HTML failā un padarīt testēšanu un atdalīšanu par ļoti sarežģītu procesu. Ievadot datus veidnē un ļaujot veidnei renderēt sevi, kļūst daudz vieglāk atdalīt un veikt vienības testus jūsu kodam. Jūs mums pateiksieties, ja izmantosiet veidnes!
Pamata Izmantošana
Flight ļauj nomainīt noklusējuma skata dzinēju, vienkārši reģistrējot savu paša skata klasi. Ritiniet uz leju, lai redzētu piemērus, kā izmantot Smarty, Latte, Blade un vairāk!
Latte
ieteicams
Šeit ir aprakstīts, kā izmantot Latte veidņu dzinēju jūsu skatiem.
Instalācija
composer require latte/latte
Pamata Konfigurācija
Galvenā ideja ir tā, ka jūs pārrakstāt render
metodi, lai izmantotu Latte nevis noklusējuma PHP renderētāju.
// overwrite the render method to use latte instead of the default PHP renderer
Flight::map('render', function(string $template, array $data, ?string $block): void {
$latte = new Latte\Engine;
// Where latte specifically stores its cache
$latte->setTempDirectory(__DIR__ . '/../cache/');
$finalPath = Flight::get('flight.views.path') . $template;
$latte->render($finalPath, $data, $block);
});
Latte Izmantošana Flight
Tagad, kad jūs varat renderēt ar Latte, jūs varat darīt kaut ko šāda:
<!-- app/views/home.latte -->
<html>
<head>
<title>{$title ? $title . ' - '}My App</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<h1>Hello, {$name}!</h1>
</body>
</html>
// routes.php
Flight::route('/@name', function ($name) {
Flight::render('home.latte', [
'title' => 'Home Page',
'name' => $name
]);
});
Kad jūs apmeklējat /Bob
savā pārlūkā, izvade būtu:
<html>
<head>
<title>Home Page - My App</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<h1>Hello, Bob!</h1>
</body>
</html>
Tālāka Lasīšana
Sarežģītāks Latte izmantošanas piemērs ar izkārtojumiem ir parādīts šīs dokumentācijas awesome plugins sadaļā.
Jūs varat uzzināt vairāk par Latte pilnām iespējām, tostarp tulkošanu un valodas iespējām, lasot oficiālo dokumentāciju.
Iebūvētais Skata Dzinējs
novecojis
Piezīme: Lai gan tas joprojām ir noklusējuma funkcionalitāte un tehniski joprojām darbojas.
Lai parādītu skata veidni, izsauciet render
metodi ar veidnes faila nosaukumu
un opcionāliem veidnes datiem:
Flight::render('hello.php', ['name' => 'Bob']);
Veidnes dati, ko jūs ievadāt, automātiski tiek ievadīti veidnē un var
tikt atsauce kā lokāla mainīgā. Veidnes faili ir vienkārši PHP faili. Ja
satura hello.php
veidnes faila ir:
Hello, <?= $name ?>!
Izvade būtu:
Hello, Bob!
Jūs varat arī manuāli iestatīt skata mainīgos, izmantojot set metodi:
Flight::view()->set('name', 'Bob');
Mainīgais name
tagad ir pieejams visos jūsu skatos. Tātad jūs varat vienkārši darīt:
Flight::render('hello');
Ņemiet vērā, ka norādot veidnes nosaukumu render metodē, jūs varat
izlaist .php
paplašinājumu.
Pēc noklusējuma Flight meklēs views
direktoriju veidnes failiem. Jūs varat
iestatīt alternatīvu ceļu jūsu veidnēm, iestatot šādu konfigurāciju:
Flight::set('flight.views.path', '/path/to/views');
Izkārtojumi
Ir izplatīti, ka tīmekļa vietnēm ir viens izkārtojuma veidnes fails ar mainīgu
saturu. Lai renderētu saturu, ko izmantot izkārtojumā, jūs varat ievadīt opcionālu
parametru render
metodē.
Flight::render('header', ['heading' => 'Hello'], 'headerContent');
Flight::render('body', ['body' => 'World'], 'bodyContent');
Jūsu skats tad būs saglabājis mainīgos, ko sauc par headerContent
un bodyContent
.
Jūs tad varat renderēt savu izkārtojumu darot:
Flight::render('layout', ['title' => 'Home Page']);
Ja veidnes 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>
Izvade būtu:
<html>
<head>
<title>Home Page</title>
</head>
<body>
<h1>Hello</h1>
<div>World</div>
</body>
</html>
Smarty
Šeit ir aprakstīts, kā izmantot Smarty veidņu dzinēju jūsu skatiem:
// Load Smarty library
require './Smarty/libs/Smarty.class.php';
// Register Smarty as the view class
// Also pass a callback function to configure Smarty on load
Flight::register('view', Smarty::class, [], function (Smarty $smarty) {
$smarty->setTemplateDir('./templates/');
$smarty->setCompileDir('./templates_c/');
$smarty->setConfigDir('./config/');
$smarty->setCacheDir('./cache/');
});
// Assign template data
Flight::view()->assign('name', 'Bob');
// Display the template
Flight::view()->display('hello.tpl');
Pilnīgumam, jums vajadzētu arī 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);
});
Blade
Šeit ir aprakstīts, kā izmantot Blade veidņu dzinēju jūsu skatiem:
Vispirms jums jāinstalē BladeOne bibliotēka caur Composer:
composer require eftec/bladeone
Tad jūs varat konfigurēt BladeOne kā skata klasi Flight:
<?php
// Load BladeOne library
use eftec\bladeone\BladeOne;
// Register BladeOne as the view class
// Also pass a callback function to configure BladeOne on load
Flight::register('view', BladeOne::class, [], function (BladeOne $blade) {
$views = __DIR__ . '/../views';
$cache = __DIR__ . '/../cache';
$blade->setPath($views);
$blade->setCompiledPath($cache);
});
// Assign template data
Flight::view()->share('name', 'Bob');
// Display the template
echo Flight::view()->run('hello', []);
Pilnīgumam, jums vajadzētu arī 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ērā hello.blade.php veidnes fails var izskatīties šādi:
<?php
Hello, {{ $name }}!
Izvade būtu:
Hello, Bob!
Skatīt Arī
- Paplašināšana - Kā pārrakstīt
render
metodi, lai izmantotu citu veidņu dzinēju. - Maršrutēšana - Kā kartēt maršrutus uz kontrolieriem un renderēt skatus.
- Atbildes - Kā pielāgot HTTP atbildes.
- Kāpēc Ietvars? - Kā veidnes iederas lielajā attēlā.
Traucējummeklēšana
- Ja jums ir pāradresēšana jūsu starpprogrammatūrā, bet jūsu lietojumprogramma nešķiet pāradresējamies, pārliecinieties, ka pievienojat
exit;
paziņojumu jūsu starpprogrammatūrā.
Izmaiņu Žurnāls
- v2.0 - Sākotnējais izdevums.