浏览代码

[Form] Added ArrayAccess to DefaultRenderer

Bernhard Schussek 14 年之前
父节点
当前提交
bfbc1121ce

+ 28 - 1
src/Symfony/Component/Form/Renderer/DefaultRenderer.php

@@ -15,7 +15,7 @@ use Symfony\Component\Form\FieldInterface;
 use Symfony\Component\Form\Renderer\Theme\ThemeInterface;
 use Symfony\Component\Form\Renderer\Plugin\PluginInterface;
 
-class DefaultRenderer implements RendererInterface
+class DefaultRenderer implements RendererInterface, \ArrayAccess
 {
     private $field;
 
@@ -31,6 +31,8 @@ class DefaultRenderer implements RendererInterface
 
     private $rendered = false;
 
+    private $children = array();
+
     public function __construct(ThemeInterface $theme, $template)
     {
         $this->theme = $theme;
@@ -65,6 +67,11 @@ class DefaultRenderer implements RendererInterface
         }
     }
 
+    public function setChildren(array $renderers)
+    {
+        $this->children = $renderers;
+    }
+
     public function setTheme(ThemeInterface $theme)
     {
         $this->theme = $theme;
@@ -159,4 +166,24 @@ class DefaultRenderer implements RendererInterface
             $vars
         ));
     }
+
+    public function offsetGet($name)
+    {
+        return $this->children[$name];
+    }
+
+    public function offsetExists($name)
+    {
+        return isset($this->children[$name]);
+    }
+
+    public function offsetSet($name, $value)
+    {
+        throw new \BadMethodCallException('Not supported');
+    }
+
+    public function offsetUnset($name)
+    {
+        throw new \BadMethodCallException('Not supported');
+    }
 }

+ 2 - 0
src/Symfony/Component/Form/Renderer/RendererInterface.php

@@ -13,6 +13,8 @@ namespace Symfony\Component\Form\Renderer;
 
 interface RendererInterface
 {
+    function setChildren(array $renderers);
+
     function setVar($name, $value);
 
     function getVar($name);