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

时间:2015-12-01 14:10:22

标签: javascript twig slim

{% 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 %}

2 个答案:

答案 0 :(得分:1)

没关系,我只是这样使用,我已添加private void data1_CellLeave(object sender, DataGridViewCellEventArgs e) { if (Convert.ToInt32(((DataGridView)sender).CurrentCell.Value) < -99) { ((DataGridView)sender).CurrentCell.Value = -99; } }

user/

答案 1 :(得分:0)

documentation所述,为路线生成链接,您需要path_for()功能而不是urlFor()

此外,您正尝试在JS函数中渲染twig-part。 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。当Twig呈现页面时,会生成一次此URL。之后它生成JS行,其中JS解释器将声明的pattern替换为JS值作为参数传递给JS函数。