如何在 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>');
{% 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>');