mirror of
https://github.com/twigphp/Twig.git
synced 2026-09-15 20:06:31 +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)
|
* 1.12.3 (2013-XX-XX)
|
||||||
|
|
||||||
* added a batch filter
|
* 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.12.2 (2013-02-09)
|
||||||
|
|
||||||
|
|||||||
@@ -1,14 +1,23 @@
|
|||||||
``url_encode``
|
``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
|
.. 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::
|
.. 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
|
.. _`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 string|array $url A URL or an array of query parameters
|
||||||
* @param bool $raw true to use rawurlencode() instead of urlencode
|
* @param bool $raw true to use rawurlencode() instead of urlencode
|
||||||
*
|
*
|
||||||
* @return string The URL encoded value
|
* @return string The URL encoded value
|
||||||
*/
|
*/
|
||||||
function twig_urlencode_filter($url, $raw = false)
|
function twig_urlencode_filter($url, $raw = false)
|
||||||
{
|
{
|
||||||
|
if (is_array($url)) {
|
||||||
|
return http_build_query($url, '', '&');
|
||||||
|
}
|
||||||
|
|
||||||
if ($raw) {
|
if ($raw) {
|
||||||
return rawurlencode($url);
|
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