slim-view/fluid

Slim 框架视图助手,基于 TYPO3 Fluid 模板引擎构建。

1.4.0 2017-09-09 21:17 UTC

This package is auto-updated.

Last update: 2024-09-15 11:03:54 UTC


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,以了解概念并学习如何编写自定义视图助手。