coercive/render

Coercive Utility Render

0.1.8 2024-03-12 08:05 UTC

This package is auto-updated.

Last update: 2024-09-12 09:11:33 UTC


README

一个简单的模板渲染系统。[测试版]

获取

composer require coercive/render

加载

use Coercive\Utility\Render\Render;

# Load
$render = new Render( 'TEMPLATES_ROOT_PATH' );

# Set globals vars (global for all views and sub injected views)
# use $render->setGlobalDatas for override or add for conserve previous added
$render->addGlobalDatas([
	'app' => new App(),
	'header' => new Header(),
	'handler' => new Handler()
	...
]);

# Set Views Datas
# use $render->setDatas for override or add for conserve previous added
$render->addDatas([
	'title' => 'My Custom Title',
	'content' => 'Lorem Ipsum Text',
	'link' => 'Visit my website : <a href="#">my-web-site.com</a>'
	...
]);

# Set View path
# use $render->setPath for override or add for conserve previous added
$render->setPath('/TemplateName/ViewDir/Viewname');

# Multi views
foreach([...] as $path) {
    $render->addPath($path);
}

# If multiple template, you need to set where load a layout
# Or if you need to load in specific other template for a/b testing or events ...
$render->setTemplate('MyEventTemplate2017');

# Now, Render !
echo $render->render();

错误

use Coercive\Utility\Render\Render;

# Load
$render = new Render( 'TEMPLATES_ROOT_PATH' );

# You can see all errors like this
foreach($render->getExceptions() as $exception) {
    echo $exception->getMessage();
}

# Or you can log error when it's added with handler
$render->debug(function ($exception) {
    error_log(print_r($exception->getMessage(), true));
});

树状结构

在模板目录中,需要布局目录/文件。

Dir: Website
- Dir: Templates
-- Dir: Template
-- Dir: view
--- File: view-1.php
--- File: view-2.php
--- File: view-3.php
-- Dir: layout
--- File: layout.php
--- File: head.php
--- File: header.php
--- File: footer.php

布局由渲染方法返回。因此你将在布局文件中加载和输出视图。即使你没有实际的模板。(空布局)

布局

<html>
	<head>
		<?php require_once(__DIR__ . DIRECTORY_SEPARATOR . 'head.php') ?>
	</head>
	<body>

		<header>
			<?php require_once(__DIR__ . DIRECTORY_SEPARATOR . 'header.php') ?>
		</header>

		<!-- VIEW CONTENT -->
		<div id="view"><?php
			//------------------------
			// RENDER VIEW IN TEMPLATE
			echo $this->getViews();
			//------------------------?>
		</div>

		<footer>
			<?php require_once(__DIR__ . DIRECTORY_SEPARATOR . 'footer.php') ?>
		</footer>
	</body>
</html>

没有模板?需要布局

只需在空布局中打印你的视图

echo $this->getViews();

示例基本树

Dir: Website
	Dir: views
		Dir: Default
			Dir: layout
				File: layout.php
				File: head.php
				File: header.php
				File: footer.php
		Dir: Email
			Dir: layout
				File: layout.php
		Dir: None
			Dir: layout
				File: layout.php