tflori / syna
用于渲染原生PHP模板的库
v1.1.1
2022-03-19 20:46 UTC
Requires
- php: ^7.1 || ^8.0
Requires (Dev)
This package is auto-updated.
Last update: 2024-09-20 02:19:39 UTC
README
PHP库,用于通过部分、继承和辅助函数渲染原生PHP模板。
该库受到aura/view和league/plates的启发。两者各有优势,但都缺少一些主要功能。
Að sýna在冰岛语中意为“显示”。
辅助函数
这两个库都缺少一个功能,即不需要为每个辅助函数进行注册。Syna具有注册存放辅助函数命名空间的能力。添加命名空间App\ViewHelper
将加载App\ViewHelper\Date
,以便在$view->date()
中使用。
布局
此外,Syna还提供了使用布局的能力,如TwoStepView模式所述。除了在视图中扩展视图(如league/plates、illuminate/blade等其他库所建议的)之外,您应该在控制器中定义布局。在扩展视图和将HTML片段包装到另一个元素之间的关注点分离是一种逻辑,不应由视图来决定(例如,加载模态对话框的内容或加载带有导航、页眉和页脚的完整页面)。
命名定位器
扩展视图
安装
像我所有的库一样:仅使用composer
$ composer require tflori/syna
基本用法
<?php use Syna\Factory; use Syna\HelperLocator; use Syna\ViewLocator; $viewLocator = new ViewLocator(__DIR__ . '/resources/views'); $layoutLocator = new ViewLocator(__DIR__ . '/resources/layouts'); $helperLocator = new HelperLocator(); $templates = new Factory($viewLocator, $helperLocator, $layoutLocator); echo $templates->render('pages/home', [], 'fullPage');
layouts/fullPage.phtml
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Example</title> </head> <body> <?= $v->fetch('partials/navbar') ?> <div id="content"> <?= $v->section('content') ?> </div> </body> </html>
views/pages/home
<?php $v->extends('pageWithTeaser'); ?> <?php $v->start('teaser') ?> <img src="teaser.jpg" /> <div class="teaser-content"> <h2>Title for teaser</h2> <p>Lorem ipsum dolor sit amet...</p> </div> <?php $v->end(); ?> <div class="card">Lorem ipsum dolor sit amet...</div> <div class="card">Lorem ipsum dolor sit amet...</div> <p>what ever...</p>
views/pageWithTeaser
<div class="teaser"> <?= $v->section('teaser') ?> </div> <?= $v->section('content') ?>