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

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


<?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';

   }

}

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


斯蒂芬大帝
浏览 113回答 3
3回答

紫衣仙女

我建议您将“执行 ViewHelper 的操作”的函数提取到一个单独的方法中,并使其可以将此方法作为公共方法调用,并使其接收所需的 PHP 函数参数(例如,用户电子邮件地址) *包裹在一个array $parameters.然后可以从 ViewHelper 和 TypoScript 调用此方法。TypoScript 类似于:lib.myGravatarObject&nbsp;=&nbsp;USER lib.myGravatarObject.userFunc&nbsp;=&nbsp;MyVendor\ExtensionName\GravatarRenderer lib.myGravatarObject.userEmail&nbsp;=&nbsp;foo@bar.com如果您命名的属性与array $parameters您的 ViewHelper 参数相同,您可以简单地传递$this->arguments或$arguments从 ViewHelper 内部传递(前者如果您正在实施render(),后者如果您正在实施renderStatic())。它还使您在 TS 中使用与用于 ViewHelper 参数相同的属性名称变得更加透明。

狐的传说

您可以使用带有最小模板的 FLUIDTEMPLATE cObject(例如通过模板属性):10 = FLUIDTEMPLATE10 {&nbsp; &nbsp;template.cObject = TEXT&nbsp; &nbsp;template.cObject.value(&nbsp; &nbsp; &nbsp; <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">&nbsp; &nbsp; &nbsp; <mv:GravatarViewHelper />&nbsp; &nbsp;)}这似乎是可能的。但正如 Bernd 已经问过的:为什么要那样做?

Qyouu

你为什么要这样做?(请描述您的用例)Viewhelpers 用于 FLUID 模板,那里有正确且匹配的上下文。如果您想直接在 typoscript 中调用 PHP 函数,您可以选择userfunc(手动)。但是您需要提供必要的上下文。
打开App,查看更多内容
随时随地看视频慕课网APP