【问题标题】:Send array as a parameter + twig发送数组作为参数 + 树枝
【发布时间】:2014-06-16 11:50:52
【问题描述】:

是否可以将数组作为参数发送给函数?在网上搜索了这个,但没有进一步帮助我。这就是我所拥有的:

在我的树枝上我有:

<a id="exporttocsv" href="{{ path('dashboard.index', {'data': tableresults|json_encode}) }}" class="btn btn-default">Export to CSV</a>

在我的控制器中:

public function exporttocsvAction(Application $app, Request $request, $data)
{
    header("Content-Type: text/csv");
    header("Content-Disposition: attachment; filename=test.csv");
    header("Pragma: no-cache");
    header("Expires: 0");

    $output = fopen("php://output", "w");

    foreach ($data as $row)
    {
        fputcsv($output, $row, ',');
    }

    fclose($output);
    exit();
}

但是当我点击我的按钮时,我的链接会变成这样并且只是刷新:

http://thelinktomypage.com/en/dashboard?data=%5B%7B%22Code%22%3A%22010%22%2C%22Name%22%3A%22Rebecca+Zygmunt%22%2C%22PA%22%3Anull%2C%22PB%22%3Anull%2C%22PG%22%3Anull%2C%22GF%22%3Anull%2C%22SB%22%3Anull%2C%22VIA%22%3Anull%2C%22Blanco%22%3Anull%7D%2C%7B%22Code%22%3A%22014%22%2C%22Name%22%3A%22Maria+Berhe%22%2C%22PA%22%3Anull%2C%22PB%22%3Anull%2C%22PG%22%3Anull%2C%22GF%22%3Anull%2C%22SB%22%3Anull%2C%22VIA%22%3Anull%2C%22Blanco%22%3Anull%7D%2C%7B%22Code%22%3A%22021%22%2C%22Name%22%3A%22Patrick+J%5Cu00f6hnk%22%2C%22PA%22%3Anull%2C%22PB%22%3Anull%2C%22PG%22%3Anull%2C%22GF%22%3Anull%2C%22SB%22%3Anull%2C%22VIA%22%3Anull%2C%22Blanco%22%3Anull%7D%2C%7B%22Code%22%3A%22030%22%2C%22Name%22%3A%22Alisha+Helena+Storr%22%2C%22PA%22%3Anull%2C%22PB%22%3Anull%2C%22PG%22%3Anull%2C%22GF%22%3Anull%2C%22SB%22%3Anull%2C%22VIA%22%3Anull%2C%22Blanco%22%3Anull%7D%2C%7B%22Code%22%3A%22033%22%2C%22Name%22%3A%22Jan+Nicolai+Kaminski%22%2C%22PA%22%3Anull%2C%22PB%22%3Anull%2C%22PG%22%3Anull%2C%22GF%22%3Anull%2C%22SB%22%3Anull%2C%22VIA%22%3Anull%2C%22Blanco%22%3Anull%7D%2C%7B%22Code%22%3A%22034%22%2C%22Name%22%3A%22Sebastian+Mantel%22%2C%22PA%22%3Anull%2C%22PB%22%3Anull%2C%22PG%22%3Anull%2C%22GF%22%3Anull%2C%22SB%22%3Anull%2C%22VIA%22%3Anull%2C%22Blanco%22%3Anull%7D%2C%7B%22Code%22%3A%22035%22%2C%22Name%22%3A%22Sabrina+Herrmann%22%2C%22PA%22%

可以发送数组吗?或者我应该使用 ajax 调用并发送数据吗?

【问题讨论】:

  • 您想通过 HTTP 向您的 Action 发送一个数组 对吗?但是现在您正在附加参数 json 编码,并且出于某种原因您不想在 Action 中对其进行解码?您不能将结果保存在会话中并在您的操作中使用该数据吗?
  • 没有 |json_encode 的结果是一样的。好的,但是使用 ajax 调用不是更容易吗?
  • 使用 ajax 调用如何更容易?您的数据在后端某处呈现/计算,因此可以存储在会话中。然后,您可以为将会话数据转换为 CSV 的操作提供临时下载链接。

标签: php arrays symfony twig silex


【解决方案1】:

要在 GET 请求中传递数组,请检查此答案 how to pass an array in GET in PHP?。

您也可以在 POST 请求中执行此操作,例如使用此处描述的表单Passing arrays from HTML form to PHP。

但在您的情况下,似乎最好的方法是使用 ajax+json 传递它,然后在服务器端解码。检查以下答案How to pass an array using PHP & Ajax to Javascript? :)

【讨论】:

  • 错了。您可以通过 get 传递数组。示例_example.org/index.php?array[foo]=bar&array[x]=y
  • 还有一点,当您通过 GET 传递数据时,您需要记住大多数网络服务器的限制为 8192 字节 (8KB)。而这里@nielsv 需要传递csv,而且它肯定可以更长......
猜你喜欢
  • 1970-01-01
  • 2012-02-09
  • 1970-01-01
  • 2013-02-08
  • 2021-03-30
  • 1970-01-01
  • 1970-01-01
  • 2016-05-22
  • 1970-01-01
相关资源
最近更新 更多