首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从typoscript (.ts)文件中调用TYPO3自定义viewhelper并接收来自viewhelper的响应?

如何从typoscript (.ts)文件中调用TYPO3自定义viewhelper并接收来自viewhelper的响应?
EN

Stack Overflow用户
提问于 2020-05-28 20:19:15
回答 3查看 376关注 0票数 0

我试图从一个typoscript文件中调用TYPO3 9.5.9中的自定义viewhelper。但它不起作用。下面给出了viewhelper的一个示例:

代码语言:javascript
复制
<?php
namespace 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';
   }
}

如何从typoscript (.ts)文件中调用此自定义viewhelper并获得响应?

EN

回答 3

Stack Overflow用户

发布于 2020-05-31 21:20:25

我建议您将“做ViewHelper所做的事情”的函数提取到一个单独的方法中,并使其能够作为公共方法调用此方法,并使其接收包装在array $parameters中的所需的PHP函数参数(例如,用户电子邮件地址)。

然后,可以从ViewHelper和TypoScript调用此方法。TypoScript应该是这样的:

代码语言:javascript
复制
lib.myGravatarObject = USER
lib.myGravatarObject.userFunc = MyVendor\ExtensionName\GravatarRenderer
lib.myGravatarObject.userEmail = foo@bar.com

如果将array $parameters的属性命名为与ViewHelper参数相同的名称,则只需从ViewHelper中传递$this->arguments$arguments (如果实现的是render(),则传递的是前者;如果实现的是renderStatic(),则传递的是后者)。它还使得在TS中使用与ViewHelper参数相同的属性名变得更加透明。

票数 3
EN

Stack Overflow用户

发布于 2020-05-28 21:58:25

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

代码语言:javascript
复制
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 />
   )
}

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

票数 1
EN

Stack Overflow用户

发布于 2020-05-28 21:29:43

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

Viewhelpers用于FLUID模板中,在那里你有正确和匹配的上下文。

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62064542

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档