* 1.12.3 (2013-XX-XX)
* added a batch filter
+ * added support for encoding an array as query string in the url_encode filter
* 1.12.2 (2013-02-09)
``url_encode``
==============
-The ``url_encode`` filter URL encodes a given string:
+.. versionadded:: 1.12.3
+ Support for encoding an array as query string was added in Twig 1.12.3.
+
+The ``url_encode`` filter percent encodes a given string as URL segment
+or an array as query string:
.. code-block:: jinja
- {{ data|url_encode() }}
+ {{ "path-seg*ment"|url_encode }}
+ {# outputs "path-seg%2Ament" #}
+
+ {{ {'param': 'value', 'foo': 'bar'}|url_encode }}
+ {# outputs "param=value&foo=bar" #}
.. note::
- Internally, Twig uses the PHP `urlencode`_ function.
+ Internally, Twig uses the PHP `urlencode`_ or the `http_build_query`_ function.
.. _`urlencode`: http://php.net/urlencode
+.. _`http_build_query`: http://php.net/http_build_query
}
/**
- * URL encodes a string.
+ * URL encodes a string as a path segment or an array as a query string.
*
- * @param string $url A URL
- * @param bool $raw true to use rawurlencode() instead of urlencode
+ * @param string|array $url A URL or an array of query parameters
+ * @param bool $raw true to use rawurlencode() instead of urlencode
*
* @return string The URL encoded value
*/
function twig_urlencode_filter($url, $raw = false)
{
+ if (is_array($url)) {
+ return http_build_query($url, '', '&');
+ }
+
if ($raw) {
return rawurlencode($url);
}
--- /dev/null
+--TEST--
+"url_encode" filter
+--TEMPLATE--
+{{ {foo: "bar", number: 3, "spéßi%l": "e%c0d@d", "spa ce": ""}|url_encode }}
+{{ {foo: "bar", number: 3, "spéßi%l": "e%c0d@d", "spa ce": ""}|url_encode|raw }}
+{{ {}|url_encode|default("default") }}
+--DATA--
+return array()
+--EXPECT--
+foo=bar&number=3&sp%C3%A9%C3%9Fi%25l=e%25c0d%40d&spa+ce=
+foo=bar&number=3&sp%C3%A9%C3%9Fi%25l=e%25c0d%40d&spa+ce=
+default