slim-view / fluid
Slim 框架视图助手,基于 TYPO3 Fluid 模板引擎构建。
1.4.0
2017-09-09 21:17 UTC
Requires
- php: >=5.5.0
- slim/slim: ^3.1
- typo3fluid/fluid: ^2.3
README
这是一个基于 TYPO3 Fluid 模板引擎构建的 Slim 框架视图助手。您可以使用此组件在 Slim 框架应用程序中创建和渲染模板。
安装
通过 Composer
$ composer require slim-view/fluid
需要 Slim 框架 3 和 PHP 5.5 或更高版本。
用法
<?php
// Create Slim app
$app = new \Slim\App();
// Fetch DI Container
$container = $app->getContainer();
// Register Fluid View helper
$container['view'] = function ($c) {
$view = new \Slim\Views\Fluid([
'templateRootPaths' => ['path/to/Templates/'],
'partialRootPaths' => ['path/to/Partials/'],
'layoutRootPaths' => ['path/to/Layouts/'],
'singlePath' => 'path/to/Singles/',
'cachePath' => 'path/to/fluid_cache/',
'viewHelperNamespaces' => [
'vh' => 'VendorName\\Package\\ViewHelper'
],
]);
return $view;
};
// Renders template file "path/to/Singles/Profile.html"
$app->get('/hello/{name}', function ($request, $response, $args) {
return $this->view->render($response, 'Profile', [
'name' => $args['name']
]);
})->setName('profile');
// Run app
$app->run();
如果您已将路由逻辑外包给控制器和操作,则您的操作可能如下所示,假设 $this->view
是 \Slim\Views\Fluid
的实例
<?php
class ProfileController
{
public function logoutAction($request, $response, $args)
{
$this->view->setController('Profile');
$this->view->setAction('logout');
$this->view->assign('name', $args['name']);
// Template file loaded: path/to/Templates/Profile/Logout.html
return $this->view->render($response);
}
}
如果您想在不涉及响应的情况下渲染 fluid 模板,可以使用 fetch()
方法
<?php
$app->get('/example/{name}', function ($request, $response, $args) {
$renderedContent = $this->view->fetch('Profile', [
'name' => $args['name']
]);
// ...
});
注册自定义视图助手命名空间
要在 fluid 中注册视图助手命名空间,只需向 viewHelperNamespaces
配置中添加一个条目:例如
[
'abc' => 'Vendor\\Package\\ViewHelper',
]
一个“Hello World”视图助手看起来像这样
<?php
namespace Vendor\Package\ViewHelper;
/**
*
* @package Vendor\Package\ViewHelper
*/
class HelloWorldViewHelper extends \TYPO3Fluid\Fluid\Core\ViewHelper\AbstractViewHelper
{
public function render()
{
return 'Hello World!';
}
}
然后在 fluid 模板中这样调用它
<abc:helloWorld />
Fluid 模板
基本上,一个 fluid 模板可能看起来像这样
<span>Hello {name}!</span>
Fluid 提供了一些基本的视图助手,您可以使用
<span>
<f:if condition="{name}">
<f:then>Hello {name}!</f:then>
<f:else>Hello stranger!</f:else>
</f:if>
</span>
也存在一种 内联注释 用于调用视图助手
<span>
Hello {f:if(condition:'{name}', then: '{name}', else: 'Stranger')}!
</span>
视图助手基本上是一个 PHP 类。fluid 默认视图助手以 f:
前缀。您可以为自定义视图助手引入自己的命名空间。
更多 fluid 文档
代码是最好的文档。不幸的是,我没有找到完整的 standalone fluid 文档集,因为最初这个模板引擎是 TYPO3 CMS 的一部分。
然而,fluid 包提供了一些示例。在这里您可以得到一个 布局和部分如何工作的概述。提供的视图助手类可以在 这里 找到。每个类都有注释中的使用示例。
还可以查看 fluid 的 README,以了解概念并学习如何编写自定义视图助手。