为了账号安全,请及时绑定邮箱和手机立即绑定

如何从拼写错误 (.ts) 文件调用 TYPO3 自定义 viewhelper 并从

如何从拼写错误 (.ts) 文件调用 TYPO3 自定义 viewhelper 并从

PHP
斯蒂芬大帝 2023-04-21 14:06:16
我试图从错别字文件调用 TYPO3 9.5.9 中的自定义 viewhelper。但它不起作用。下面给出了 viewhelper 的示例:<?phpnamespace MyVendor\BlogExample\ViewHelpers;use TYPO3Fluid\Fluid\Core\Rendering\RenderingContextInterface;use TYPO3Fluid\Fluid\Core\ViewHelper\Traits\CompileWithRenderStatic;use TYPO3Fluid\Fluid\Core\ViewHelper\AbstractViewHelper;class GravatarViewHelper extends AbstractViewHelper{   use CompileWithRenderStatic;   public static function renderStatic(       array $arguments,       \Closure $renderChildrenClosure,       RenderingContextInterface $renderingContext   ) {       return 'World';   }}如何从打字错误 (.ts) 文件中调用此自定义 viewhelper 并获得响应?
查看完整描述

3 回答

?
紫衣仙女

TA贡献1839条经验 获得超15个赞

我建议您将“执行 ViewHelper 的操作”的函数提取到一个单独的方法中,并使其可以将此方法作为公共方法调用,并使其接收所需的 PHP 函数参数(例如,用户电子邮件地址) *包裹在一个array $parameters.

然后可以从 ViewHelper 和 TypoScript 调用此方法。TypoScript 类似于:

lib.myGravatarObject = USER
lib.myGravatarObject.userFunc = MyVendor\ExtensionName\GravatarRenderer
lib.myGravatarObject.userEmail = foo@bar.com

如果您命名的属性与array $parameters您的 ViewHelper 参数相同,您可以简单地传递$this->arguments$arguments从 ViewHelper 内部传递(前者如果您正在实施render(),后者如果您正在实施renderStatic())。它还使您在 TS 中使用与用于 ViewHelper 参数相同的属性名称变得更加透明。


查看完整回答
反对 回复 2023-04-21
?
狐的传说

TA贡献1804条经验 获得超3个赞

您可以使用带有最小模板的 FLUIDTEMPLATE cObject(例如通过模板属性):


10 = FLUIDTEMPLATE

10 {

   template.cObject = TEXT

   template.cObject.value(

      <html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" xmlns:mv="http://typo3.org/ns/MyVendor/BlogExample/ViewHelpers" data-namespace-typo3-fluid="true">

      <mv:GravatarViewHelper />

   )

}

这似乎是可能的。但正如 Bernd 已经问过的:为什么要那样做?


查看完整回答
反对 回复 2023-04-21
?
Qyouu

TA贡献1786条经验 获得超11个赞

你为什么要这样做?(请描述您的用例)

Viewhelpers 用于 FLUID 模板,那里有正确且匹配的上下文。

如果您想直接在 typoscript 中调用 PHP 函数,您可以选择userfunc(手动)。但是您需要提供必要的上下文。



查看完整回答
反对 回复 2023-04-21
  • 3 回答
  • 0 关注
  • 75 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信