guym4c / twig-prop-types
Twig组件的Prop类型
v2.1.0
2020-06-07 00:01 UTC
Requires
- guym4c/prop-types: ^1.0.1
- twig/twig: ^3.0
This package is auto-updated.
Last update: 2024-09-07 09:19:21 UTC
README
React prop types,已移植到Twig。
安装
使用Composer
composer require guym4c/twig-prop-types
用法
此包使得guym4c/prop-types在Twig中可访问。有关如何使用prop类型的文档,请参考该包。
在Twig中,“Props”指的是当前上下文。您可以使用Twig中的only
关键字来阻止上下文作用域被继承。
$twigEnv->addExtension(new Guym4c\TwigProps\PropTypesExtension($twigEnv, $bypass));
扩展构造函数需要当前Twig环境和一个标志来跳过prop检查。您可能希望在生产环境中阻止验证器运行,以避免任何性能问题。(这不会阻止默认prop值的设置。)
验证
要验证您的props,请将以下内容放在模板文件的顶部
{{ props({ optionalNumber: PropTypes.number(), aString: PropTypes.string().isRequired(), anObject: PropTypes.instanceof('An.Instance.Of.This.Class'), heey: PropTypes.shape({ maca: PropTypes.string().isRequired(), rena: PropTypes.string().isRequired(), }), }) }}
Twig特定的差异
当在检查实例类型时给出完全限定的类名,您可以使用点代替反斜杠来简化字符串转义问题,并且开头的反斜杠或点是不必要的。
高级
您可以向构造函数传递额外的属性
public function __construct( Twig\Environment $view, bool $bypass, string $typesGlobal = 'PropTypes', array $exclude = [], bool $allowExtraProperties = false ) {
$twigEnv
:当前Twig环境$bypass
:$typesGlobal
(可选):PropTypes
全局的自定义名称$exclude
(可选):要从验证中排除的上下文变量。以下划线_
(和全局类型)为前缀的变量将自动排除$allowExtraProperties
(可选):如果上下文中找到意外的未排除的额外props,prop验证是否应该失败(默认为false)
默认值
如果需要,您必须在调用props()
之后设置所需props的默认值,以确保如果未提供则正确失败。
{{ props({ someProp: PropTypes.string(), }) ~ defaults({ someProp: 'foo', }) }}
使用Twig连接运算符(~
)将props()
和defaults()
调用分开,以便它们可以在同一个{{
输出块}}
中调用而不会引发错误。这两个函数都不返回值,因此这样做是安全的。