added Twig_Loader_Filesystem::prependPath()
authorFabien Potencier <fabien.potencier@gmail.com>
Sat, 14 Jul 2012 14:15:01 +0000 (16:15 +0200)
committerFabien Potencier <fabien.potencier@gmail.com>
Sun, 22 Jul 2012 11:52:09 +0000 (13:52 +0200)
CHANGELOG
doc/api.rst
lib/Twig/Loader/Filesystem.php

index c7fc0a9..f47168a 100644 (file)
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,6 +1,6 @@
 * 1.9.2 (2012-XX-XX)
 
- * n/a
+ * added Twig_Loader_Filesystem::prependPath()
 
 * 1.9.1 (2012-07-22)
 
index 117bf27..30107d0 100644 (file)
@@ -142,6 +142,12 @@ With such a configuration, Twig will first look for templates in
 ``$templateDir1`` and if they do not exist, it will fallback to look for them
 in the ``$templateDir2``.
 
+You can add or prepend paths via the ``addPath()`` and ``prependPath()``
+methods::
+
+    $loader->addPath($templateDir3);
+    $loader->prependPath($templateDir4);
+
 ``Twig_Loader_String``
 ......................
 
index 18104a5..62043bd 100644 (file)
@@ -75,6 +75,23 @@ class Twig_Loader_Filesystem implements Twig_LoaderInterface
     }
 
     /**
+     * Prepends a path where templates are stored.
+     *
+     * @param string $path A path where to look for templates
+     */
+    public function prependPath($path)
+    {
+        // invalidate the cache
+        $this->cache = array();
+
+        if (!is_dir($path)) {
+            throw new Twig_Error_Loader(sprintf('The "%s" directory does not exist.', $path));
+        }
+
+        array_unshift($this->paths, rtrim($path, '/\\'));
+    }
+
+    /**
      * Gets the source code of a template, given its name.
      *
      * @param string $name The name of the template to load