mirror of
https://github.com/twigphp/Twig.git
synced 2026-09-15 11:56:50 +00:00
let url_encode filter also accept array of query parameters
This commit is contained in:
committed by
Fabien Potencier
parent
15336c154c
commit
fcf9525dc3
@@ -1,6 +1,7 @@
|
||||
* 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)
|
||||
|
||||
|
||||
@@ -1,14 +1,23 @@
|
||||
``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
|
||||
|
||||
@@ -515,15 +515,19 @@ function twig_number_format_filter(Twig_Environment $env, $number, $decimal = nu
|
||||
}
|
||||
|
||||
/**
|
||||
* 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);
|
||||
}
|
||||
|
||||
@@ -0,0 +1,12 @@
|
||||
--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
|
||||
Reference in New Issue
Block a user