簡體   English   中英

如何從拼寫錯誤 (.ts) 文件調用 TYPO3 自定義 viewhelper 並從 viewhelper 接收響應?

[英]How to call a TYPO3 custom viewhelper from a typoscript (.ts) file and receive a response from viewhelper?

我試圖從 typoscript 文件調用 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 並獲得響應?

我建議您將“執行 ViewHelper 的操作”的 function 提取到一個單獨的方法中,並使其可以將此方法作為公共方法調用,並使其接收所需的 PHP function arguments(例如,用戶 email 地址) *包裝在array $parameters中。

然后可以從 ViewHelper 和 TypoScript 調用此方法。 TypoScript 類似於:

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

如果您將array $parameters的屬性命名為與您的 ViewHelper arguments 相同,您可以簡單地從 ViewHelper 中傳遞$this->arguments$arguments (前者如果您正在實施render() ,后者如果您正在實施renderStatic() ). 它還使您在 TS 中使用與用於 ViewHelper arguments 相同的屬性名稱變得更加透明。

您可以使用帶有最小模板的 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 已經問過的:為什么要那樣做?

你為什么要這樣做? (請描述您的用例)

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

如果您想直接在 typoscript 中調用 PHP function,您可以選擇userfunc手動)。 但是您需要提供必要的上下文。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM