如何在 Slim + Twig 上循环 javascript urlfor()

How to loop on javascript urlfor() on Slim + Twig

{% block page_scripts %}
<script type="text/javascript">
    $('#dataTable').DataTable({
        "bProcessing": true,
        "bServerSide": true,
        "sAjaxSource": "all-users-json",
        "fnRowCallback": function( nRow, aData, iDisplayIndex, iDisplayIndexFull ) {
            var url = "{{ urlFor('management.user', , {'user': "+aData[1]+"}) }}"; //<-----------
            $('td:eq(0)', nRow).html('<a href="' + url + '">' + aData[0] + '</a>');
        }
    });
</script>
{% endblock %}

documentation 中所述,为您需要 path_for() 函数而不是 urlFor() 的路线生成 link。

您还试图在 JS 函数中渲染树枝部分。 Twig 只渲染这个块一次。它呈现 JS 代码,而不是 运行 此代码,因此它无法在 JS 函数中呈现自身。

试试这个代码:

{% block page_scripts %}
<script type="text/javascript">
    $('#dataTable').DataTable({
        "bProcessing": true,
        "bServerSide": true,
        "sAjaxSource": "all-users-json",
        "fnRowCallback": function( nRow, aData, iDisplayIndex, iDisplayIndexFull ) {
            {% set pattern = '#some_unique_symbols_combination#' %}
            var url = "{{ path_for('management.user', {'user': pattern}) }}";
            url = url.replace('{{ pattern }}', aData[1]);
            $('td:eq(0)', nRow).html('<a href="' + url + '">' + aData[0] + '</a>');
        }
    });
</script>
{% endblock %}

这里发生了什么?我声明了一些 pattern 不会与 aData[1] 值相交,并为给定路线生成了唯一的 URL。这个 URL 在 Twig 渲染页面时生成一次。之后它生成 JS 行,其中 JS 解释器将声明的 pattern 替换为作为参数传递给 JS 函数的 JS 值。

没关系,我就是这样用的,我加了user/

$('td:eq(0)', nRow).html('<a href="user/' + aData[1] + '">' + aData[0] + '</a>');