Browse Source

Add addHelpers() and normalize assoc helpers array

mscherer 4 years ago
parent
commit
bed4b26556

+ 1 - 1
src/Error/ExceptionRenderer.php

@@ -420,7 +420,7 @@ class ExceptionRenderer implements ExceptionRendererInterface
     {
         $builder = $this->controller->viewBuilder();
         $builder
-            ->setHelpers([], false)
+            ->setHelpers([])
             ->setLayoutPath('')
             ->setTemplatePath('Error');
         $view = $this->controller->createView('View');

+ 1 - 1
src/Mailer/Mailer.php

@@ -425,7 +425,7 @@ class Mailer implements EventListenerInterface
         }
 
         if (array_key_exists('helpers', $config)) {
-            $this->viewBuilder()->setHelpers($config['helpers'], false);
+            $this->viewBuilder()->setHelpers($config['helpers']);
             unset($config['helpers']);
         }
         if (array_key_exists('viewRenderer', $config)) {

+ 1 - 1
src/Mailer/Renderer.php

@@ -101,7 +101,7 @@ class Renderer
         $this->viewBuilder()
             ->setClassName(View::class)
             ->setLayout('default')
-            ->setHelpers(['Html'], false);
+            ->setHelpers(['Html']);
 
         return $this;
     }

+ 1 - 7
src/View/ViewBuilder.php

@@ -310,13 +310,7 @@ class ViewBuilder implements JsonSerializable
      */
     public function addHelper(string $helper, array $options = [])
     {
-        if ($options) {
-            $array = [$helper => $options];
-        } else {
-            $array = [$helper];
-        }
-
-        $this->_helpers = array_merge($this->_helpers, $array);
+        $this->_helpers[$helper] = $options;
 
         return $this;
     }

+ 23 - 4
tests/TestCase/View/ViewBuilderTest.php

@@ -112,7 +112,6 @@ class ViewBuilderTest extends TestCase
     public function arrayPropertyProvider(): array
     {
         return [
-            ['helpers', ['Html', 'Form']],
             ['options', ['key' => 'value']],
         ];
     }
@@ -211,6 +210,26 @@ class ViewBuilderTest extends TestCase
     }
 
     /**
+     * Tests that adding non-assoc and assoc merge properly.
+     *
+     * @return void
+     */
+    public function testAddHelpers(): void
+    {
+        $builder = new ViewBuilder();
+        $builder->addHelper('Form');
+        $builder->addHelpers(['Form' => ['config' => 'value']]);
+
+        $helpers = $builder->getHelpers();
+        $expected = [
+            'Form' => [
+                'config' => 'value',
+            ],
+        ];
+        $this->assertSame($expected, $helpers);
+    }
+
+    /**
      * test building with all the options.
      */
     public function testBuildComplete(): void
@@ -431,9 +450,9 @@ class ViewBuilderTest extends TestCase
 
         $helpers = $builder->getHelpers();
         $expected = [
-            'Form',
-            'Time',
-            'Text',
+            'Form' => [],
+            'Time' => [],
+            'Text' => [],
         ];
         $this->assertSame($expected, $helpers);
     }