TYPO3 - 通过javascript添加extbase viewhelper到partial

时间:2017-11-20 15:57:19

标签: datatables typo3 typo3-extensions typo3-8.x typo3-8.7.x

我有一个部分......如果我通过link.action添加一个链接......链接工作正常:

MyPartial.html:

<f:link.action action="show" pageUid="43" pluginName="abc" controller="Abc" extensionName="abc" arguments="{record:1}">ActionLink</f:link.action>

但是如果我想通过Javascript将link.page viewhelper添加到部分...

MyPartial.html

  <table id="lei_all" width="100%">
    <thead>
      <tr>
        <th>Column01</th>
        <th>Column02</th>
      </tr>
    </thead>
  </table>      

JS:

var table_all = $('#table_all').DataTable( {
        dom: "Blrtip",  
        ajax: {
              url: "/source.php",
              type: "POST"
        },
        serverSide: true,
        processing: true,
        columns: [
            { data: "column_01", 
                "render": function ( data, type, row ) {
                    return '<f:link.action action="show" pageUid="43" pluginName="abc" controller="Abc" extensionName="abc" arguments="{record:1}">'+data+'</f:link.action>';
                } },

            { data: "column_02" }                          
        ],
        ...
    } );      

我正在获得这样的原始视图助手:

<tbody>
    <tr id=row_1 class="odd" role="row">
        <td tabindex="0"><f:link.action action="show" pageUid="43" pluginName="abc" controller="Abc" extensionName="abc" arguments="{record:1}">ActionLink</f:link.action></td>     
        ...
    </tr>
</tbody>    

如何在上述情况下添加viewhelper?

1 个答案:

答案 0 :(得分:1)

ViewHelpers根本不这样做。您正在尝试的等同于在JavaScript中调用PHP函数来构建字符串。预期结果是您将看到Fluid标签输出,与您描述的完全一致。

唯一的方法是用PHP构建链接,并以某种方式将它们传输到JavaScript。有效的方法包括:

  • 使用data-something属性将网址从HTML传送到JS
  • 使用XHR请求为特定目的创建链接
  • 生成所有链接的列表,这些链接由表中的标识符,例如JSON或其他文件(例如typo3temp)索引,然后在JS中呈现表时读取此列表并使用相应的链接。

根据您的需要,选择一个并实施它,这样您的JavaScript中就没有Fluid代码。