【问题标题】:Nette - {link!} macro can't handle already existing GET params in URLNette - {link!} 宏无法处理 URL 中已经存在的 GET 参数
【发布时间】:2013-12-19 14:55:25
【问题描述】:

我在我的项目中使用 Nette 2,并且我还使用带有 AJAX 的 .latte 模板系统。

现在我有 jquery 函数(在模板中),它应该在同一个目的地生成 GET 请求,但它应该在它之后添加一些 GET 参数。

此目的地最初使用一个 GET 参数呈现,然后执行一些操作,并且在其中一些操作期间 AJAX 从同一目的地加载一些信息(只需添加几个 GET 参数)。

现在我使用 .latte {link!} 宏(感叹号代表信号)生成 AJAX URL。现在可以生成新的 URL,并将 GET 参数附加到原始 URL。 但是 append 解析不好,因为 URL 中有 &amp%3B 而不是 &

我的模板中有这段代码:

{block content}
<h1 n:block=title>New Rule</h1>

{snippet rulesForm}
    {form newRuleForm}
        {$form}
        <script type="text/javascript">
            {foreach $form['rule']->containers as $i => $rule}
                {include #jsCallback, id => $i, input => $rule['table']->name, link => tableChange}
                {include #jsCallback, id => $i, input => $rule['column']->name, link => tableChange}
            {/foreach}
        </script>
    {/form}
{/snippet}
{/block}

{define #jsCallback}
$('#{$control["newRuleForm"]['rule'][$id][$input]->htmlId}').on('change', function(){
    alert('{$link}');
    $.nette.ajax({
        type: 'GET',
        url: '{link {$link}!}',
        data: {
            'value': $(this).val(),
        }
    });
});
{/define}

如何解决此问题,以便生成正确附加 GET 参数的链接?

谢谢。

【问题讨论】:

    标签: macros get nette


    【解决方案1】:

    最好的方法是避免生成内联 Javascript。您可以通过 CSS 类标记所有这些表单控件(例如special-input),然后您不必在 Latte 迭代中生成 Javascript 代码。

    {snippet rulesForm}
        <div data-link-table="{link tableChange!}"></div>
        ...
    {/snippet}
    
    $('.special-input').on('change', function () {
        $.nette.ajax({
            type: 'GET',
            url: $('[data-link-table]').data('linkTable'),
            data: {
                value: $(this).val()
            }
        });
    });
    

    【讨论】:

      【解决方案2】:

      也许是 noescape 修饰符?

      $.nette.ajax({
          type: 'GET',
          url: '{link {$link|noescape}!}',
          data: {
              'value': $(this).val(),
          }
      });
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2010-11-14
        • 1970-01-01
        • 1970-01-01
        • 2012-03-17
        • 1970-01-01
        • 2013-10-31
        • 2014-01-08
        相关资源
        最近更新 更多