Browse Source

Use templateParams in BasicWidget.

ADmad 10 years ago
parent
commit
4d33d697cf
2 changed files with 32 additions and 0 deletions
  1. 2 0
      src/View/Widget/BasicWidget.php
  2. 30 0
      tests/TestCase/View/Widget/BasicWidgetTest.php

+ 2 - 0
src/View/Widget/BasicWidget.php

@@ -66,6 +66,7 @@ class BasicWidget implements WidgetInterface
             'val' => null,
             'type' => 'text',
             'escape' => true,
+            'templateParams' => []
         ];
         $data['value'] = $data['val'];
         unset($data['val']);
@@ -73,6 +74,7 @@ class BasicWidget implements WidgetInterface
         return $this->_templates->format('input', [
             'name' => $data['name'],
             'type' => $data['type'],
+            'templateParams' => $data['templateParams'],
             'attrs' => $this->_templates->formatAttributes(
                 $data,
                 ['name', 'type']

+ 30 - 0
tests/TestCase/View/Widget/BasicWidgetTest.php

@@ -117,4 +117,34 @@ class BasicWidgetTest extends TestCase
         ];
         $this->assertHtml($expected, $result);
     }
+
+    /**
+     * Test render with template params.
+     *
+     * @return void
+     */
+    public function testRenderTemplateParams()
+    {
+        $text = new BasicWidget(new StringTemplate([
+            'input' => '<input type="{{type}}" name="{{name}}"{{attrs}}><span>{{help}}</span>',
+        ]));
+        $data = [
+            'name' => 'my_input',
+            'type' => 'email',
+            'class' => 'form-control',
+            'required' => true,
+            'templateParams' => ['help' => 'SOS']
+        ];
+        $result = $text->render($data, $this->context);
+        $expected = [
+            'input' => [
+                'type' => 'email',
+                'name' => 'my_input',
+                'class' => 'form-control',
+                'required' => 'required',
+            ],
+            '<span', 'SOS', '/span'
+        ];
+        $this->assertHtml($expected, $result);
+    }
 }