소스 검색

[TwigBundle] fixed inheritance problem

Fabien Potencier 14 년 전
부모
커밋
e2ea634df4
1개의 변경된 파일12개의 추가작업 그리고 2개의 파일을 삭제
  1. 12 2
      src/Symfony/Bundle/TwigBundle/Extension/FormExtension.php

+ 12 - 2
src/Symfony/Bundle/TwigBundle/Extension/FormExtension.php

@@ -261,9 +261,8 @@ class FormExtension extends \Twig_Extension
                 $resource = $this->environment->loadTemplate($resource);
             }
 
-            // an array of blockName => template
             $blocks = array();
-            foreach ($resource->getBlockNames() as $name) {
+            foreach ($this->getBlockNames($resource) as $name) {
                 $blocks[$name] = $resource;
             }
 
@@ -273,6 +272,17 @@ class FormExtension extends \Twig_Extension
         return $templates;
     }
 
+    protected function getBlockNames($resource)
+    {
+        $names = $resource->getBlockNames();
+        $parent = $resource;
+        while (false !== $parent = $parent->getParent(array())) {
+            $names = array_merge($names, $parent->getBlockNames());
+        }
+
+        return array_unique($names);
+    }
+
     /**
      * Returns the name of the extension.
      *