added notes in the doc about how the defined test and the default filter work
authorFabien Potencier <fabien.potencier@gmail.com>
Sun, 30 Oct 2011 13:47:32 +0000 (14:47 +0100)
committerFabien Potencier <fabien.potencier@gmail.com>
Sun, 30 Oct 2011 13:47:32 +0000 (14:47 +0100)
doc/filters/default.rst
doc/tests/defined.rst

index 3c1bc5b..4055ead 100644 (file)
@@ -9,10 +9,19 @@ undefined or empty, otherwise the value of the variable:
     {{ var|default('var is not defined') }}
 
     {{ var.foo|default('foo item on var is not defined') }}
+
     {{ var['foo']|default('foo item on var is not defined') }}
 
     {{ ''|default('passed var is empty')  }}
 
+When using the ``default`` filter on an expression that uses variables in some
+method calls, be sure to use the ``default`` filter whenever a variable can be
+undefined:
+
+.. code-block:: jinja
+
+    {{ var.method(foo|default('foo'))|default('foo') }}
+
 .. note::
 
     Read the documentation for the :doc:`defined<../tests/defined>` and
index a6164e5..702ce72 100644 (file)
@@ -19,3 +19,12 @@ useful if you use the ``strict_variables`` option:
     {% if foo['bar'] is defined %}
         ...
     {% endif %}
+
+When using the ``defined`` test on an expression that uses variables in some
+method calls, be sure that they are all defined first:
+
+.. code-block:: jinja
+
+    {% if var is defined and foo.method(var) is defined %}
+        ...
+    {% endif %}