tuum / view
不转义的原始PHP模板渲染器。
README
一个基于原始PHP的模板,具有部分、块和布局,但没有 转义函数。
要转义模板中显示的值,请使用其他包,例如 Tuum/Form。
许可证
MIT 许可证
PSR
PSR-1, PSR-2, 和 PSR-4。
入门
安装
composer require "tuum/view: ^1.0"
示例代码
构建渲染器
$view = new Tuum\View\Renderer( new Tuum\View\Locator('/path/to/view/') ); // or alternatively, $view = Tuum\View\Renderer::forge('/path/to/view');
要渲染PHP模板文件,
$view->render('my/file-name', [ 'some' => 'data' ]);
位于 /path/to/view/my/file-name.php
的模板文件可能是
<html> Some=<?= $some; ?> </html>
Tuum/View 不会转义值。请在显示值之前使用助手函数进行转义。
使用布局
您可以在渲染器中设置默认布局
$viewer = $viewer->setLayout('layout/layout1'); $viewer->render('file-name', [ 'some' => 'data' ]);
或在单个模板文件内设置布局(因此会覆盖默认布局)
<?php $this->setLayout('layout/layout1'); ?> set layout inside this view.
布局文件
在布局文件中,使用 $this->getContent()
方法输出内容(来自初始模板文件)。
This is layout#1. <?= $this->section-getContent(); ?> End of layout#1.
使用部分
在模板文件中
在模板文件中,使用 $this->section->start()
和 $this->section->saveAs('block')
定义一个部分
<?php $this-> section->start(); ?> this is a block. <?php $this->section->saveAs('block'); ?> this is a content.
在布局文件中
在布局文件中,使用已定义的部分
Block: <?= $this->section->get('block'); ?> Content: <?= $this->getContent(); ?> Done:
您可以使用 replaceBy
方法检查一个部分是否已定义
<?php if ($this->section->exists('content')): ?> <?= $this->getContent(); ?> <?php else: ?> Welcome Section Test <?php endif; ?>
replaceBy 方法
在布局文件中使用 replaceBySection
可能会使它更清晰...
<?php $this->section->start(); ?> Welcome Section Test <?php $this->section->replaceBy('content'); ?>
replacedBy
方法将从部分(从 start()
到 replacedBy()
方法)输出内容,并检查是否存在具有该名称的部分。如果存在该部分,则输出现有部分,或输出布局中的部分。
在布局中禁用部分
在模板文件中,您可以使用 markNotToRender
方法设置部分不显示。
在模板文件中
<?php $this->section->markNotToRender('bread'); ?>
在布局文件中
<?php $this->section->start(); ?> <ol> <li>bread-top</li> <?= $this->getSection('bread'); ?> </ol> <?php $this->section->renderAs('bread'); ?>
因为 bread
部分被标记为 NotToRender,所以整个面包部分将不会渲染。
这也适用于 replaceBySection
。因此,对于 replaceBySection('content')
的示例,如果标记为 NoDisplay,则不会显示。
使用块
要包含另一个模板,请在模板文件中使用 block
方法
<?= $this->block('block-sub', ['some' =>'value']); ?>
block-sub
是另一个模板文件。模板的数据与块模板共享。
blockAsSection 方法
有时,您可能希望将块用作部分(嗯,我确实这样做了)。所以,这里有一个简单的方法来实现这一点。
<?php $this->blockAsSection('block-file', 'section-name', ['another' => 'one']); ?>