tflori/syna

用于渲染原生PHP模板的库

v1.1.1 2022-03-19 20:46 UTC

This package is auto-updated.

Last update: 2024-09-20 02:19:39 UTC


README

.github/workflows/push.yml Test Coverage Maintainability Latest Stable Version Total Downloads License

PHP库,用于通过部分、继承和辅助函数渲染原生PHP模板。

该库受到aura/viewleague/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') ?>

请参阅示例以获取更具体的示例,并查看测试以了解文档化的示例。