【问题标题】:How to loop on javascript urlfor() on Slim + Twig如何在 Slim + Twig 上循环 javascript urlfor()
【发布时间】:2015-12-03 22:46:10
【问题描述】:
{% 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 %}

【问题讨论】:

  • 更清楚地描述您的问题。
  • @PerroinThibault,他没有使用 Symfony,这个包对他没有帮助。
  • @MichaelSivolobov 用户为什么要设置 Symfony 标签?
  • @MichaelSivolobov 可惜我没看到苗条!同意 Yenne 信息

标签: javascript twig slim


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

    • nvm,我只是这样做$('td:eq(0)', nRow).html('&lt;a href=user/"' + aData[1]+ '"&gt;' + aData[0] + '&lt;/a&gt;');
    • 您尝试过我的解决方案吗?每次更改路由路径时,您的代码都需要修改。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-15
    • 2015-10-04
    • 2014-12-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多