【问题标题】:TYPO3 Fluid usage in dynamically rendered templateTYPO3 动态渲染模板中的流体使用
【发布时间】:2016-07-01 11:01:17
【问题描述】:

我正在使用 EXTbase 和流体为 TYPO3 v7+ 烹饪扩展。 我在这里..因为我正在根据某些控制器条件渲染我的流体模板。在某种条件下,我想要从用户提供的模板文件中渲染 html 代码之类的东西。

我已经使用 jQuery 绕过这种情况..

    <script>
        $(function(){
            $("#some_div_id").load("template_file.html");
        });
    </script>

猜猜看..我得到了我预期的结果,但不是真的..

<div class="clearfix">
    <ul id="image-gallery" class="gallery list-unstyled cS-hidden">
       <f:for each="{slider}" as="user" key="label" iteration="iterator">
          <li data-thumb="{user.src}"> 
              <f:image crop="{user.crop}" treatidasreference="true" src="{user.filepath}" alt="{user.title}" style="width:100%; height:auto;"></f:image>
                <f:if condition="{config.metadata.switch}!= 0">
                  <f:if condition="{user.title}">
                    <p class="light-caption" style="background: {config.metadata.opacity}; color: {config.metadata.color}; font-size: {config.metadata.size}%; text-align:{config.metadata.align};">{user.title}</p>
                  </f:if>
                </f:if>
          </li>
      </f:for>
    </ul>
</div>

这是上面的代码结果.. 看,TypoScript 变量没有被触及。有点尴尬。!!
全天候寻找答案。有什么想法吗?

【问题讨论】:

    标签: php jquery arguments typo3 fluid


    【解决方案1】:

    你需要的是部分:https://docs.typo3.org/typo3cms/ExtbaseGuide/Fluid/ViewHelper/Render.html

    在您的流体模板中,您将根据控制器提供的变量添加条件

    <f:if condition="{showPartial1}">
        <f:render partial="SomePartial1" arguments="{_all}" />
    </f:if>
    <f:if condition="{showPartial2}">
        <f:render partial="SomePartial2" arguments="{_all}" />
    </f:if>
    

    partials 通常像这样添加到 Partials 文件夹中(应该与 Templates 文件夹在同一个文件夹中)

    1. Partials/SomePartial1.html
    2. Partials/SomePartial2.html

    【讨论】:

      【解决方案2】:

      在您的控制器操作中,您可以使用$this-&gt;view-&gt;setTemplate('myDynamicTemplateName'); 来使用与操作名称建议不同的模板。

      参考:https://typo3.org/api/typo3cms/class_t_y_p_o3_1_1_c_m_s_1_1_fluid_1_1_view_1_1_template_view.html#a9c46c7bfe6a39b26478a2f37aec38d80

      【讨论】:

        【解决方案3】:

        您正在从服务器加载纯模板 - 没有涉及可以呈现您的模板的 PHP 代码。您需要以执行控制器操作,渲染模板,然后将渲染结果发送给您的方式发送请求。

        最简单的方法是使用扩展名typoscript_rendering。要使用它,请使用扩展提供的 ViewHelper 呈现指向控制器操作的链接。它看起来像这样:

        {namespace helhum=Helhum\TyposcriptRendering\ViewHelpers}
        
        // Other stuff
        
        <helhum:uri.ajaxAction action="actionName" controller="YourController"/>
        

        也许您需要添加其他参数 - ViewHelper 采用与其他 f:uri.*-ViewHelper 采用相同的参数。然后在您的 JS 中,您可以向该链接发送请求(也许将链接放入某些数据属性中),并会收到呈现的模板。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2020-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-01-03
          • 2021-09-01
          • 2017-08-25
          相关资源
          最近更新 更多