smic/fluid-signature

用于在 fluid 模板中定义预期变量的视图助手

安装量: 3,840

依赖: 0

建议者: 0

安全: 0

星标: 2

关注者: 2

分支: 0

开放问题: 0

类型:typo3-cms-extension

dev-main 2021-05-26 20:39 UTC

This package is auto-updated.

Last update: 2024-08-27 03:51:38 UTC


README

定义 fluid 模板的预期变量。

警告:Fluid 在 3.x 版本中具有类似的功能,并计划在 2.x 版本中也实现。此解决方案与TYPO3 即将提供的功能可能不兼容。如果您以后想迁移到原生功能,则需要手动操作。

为什么?

Fluid 在您忘记向模板传递变量时通常会静默失败,因为任何未定义的变量都将评估为 null。

<f:render section="hello" arguments="{firstName: 'Kasper'}"/>

<f:section name="hello">
Hello {firstName} {lastName}!
</f:section>

=> 嗨,Kasper!

另一方面,fluid 也不关心您是否向模板传递了未使用的变量。

<f:render section="hello" arguments="{firstName: 'Kasper', lastName: 'Skårhøj'}"/>

<f:section name="hello">
Hello {firstName}!
</f:section>

=> 嗨,Kasper!

这意味着传递过多的变量或过少的变量或误输变量名称是常见的错误来源。

解决方案

通过使用 <f:signature /> 标签,您可以在 fluid 代码的某个位置定义预期变量。

<f:section name="hello">
    <f:signature required="firstname, lastname" allowed="country"/>
    Hello {firstName} {lastName}{f:if(condition: country, then: ' from {country}')}!
</f:section>

<f:render section="hello" arguments="{firstName: 'Kasper'}"/>
=> ❌ Exception: Required fluid variable lastName is not available

<f:render section="hello" arguments="{firstName: 'Kasper', lastName: 'Skårhøj', profession: 'Engineer'}"/>
=> ❌ Exception: Variable profession was provided but not allowed

<f:render section="hello" arguments="{firstName: 'Kasper', lastName: 'Skårhøj'}"/>
=> ✅ Hello Kasper Skårhøj!

<f:render section="hello" arguments="{firstName: 'Kasper', lastName: 'Skårhøj', country: 'Denmark'}"/>
=> ✅ Hello Kasper Skårhøj from Denmark!

属性

required:变量列表,用逗号分隔。如果提供,如果当前变量上下文中未定义任何变量,则抛出异常。

allowed:变量列表,用逗号分隔。如果提供,当前变量上下文将检查不在 requiredallowed 中的任何变量,如果找到变量,则抛出异常。allowed="" 表示仅允许 required 变量。

defaultValues:关联数组。defaultValues="{country: 'Iceland'}" 表示如果当前变量上下文中未定义 country,则将其设置为 Iceland

安装

composer require smic/fluid-signature dev-main

该包与 TYPO3 v10 进行了测试,但应与 v8 到 v11 兼容。

我将接受 v10 和 v11 的错误报告,并为早期版本接受拉取请求。