Create renderer for form headers

[MAILPOET-2613]
This commit is contained in:
Pavel Dohnal
2020-03-11 08:45:36 +01:00
committed by Veljko V
parent 0c796e7a7d
commit 1b05ea2e68
4 changed files with 40 additions and 0 deletions

View File

@ -181,6 +181,7 @@ class ContainerConfigurator implements IContainerConfigurator {
$container->autowire(\MailPoet\Form\Block\Date::class);
$container->autowire(\MailPoet\Form\Block\Divider::class);
$container->autowire(\MailPoet\Form\Block\Html::class);
$container->autowire(\MailPoet\Form\Block\Heading::class);
$container->autowire(\MailPoet\Form\Block\Radio::class);
$container->autowire(\MailPoet\Form\Block\Segment::class);
$container->autowire(\MailPoet\Form\Block\Select::class);

View File

@ -0,0 +1,9 @@
<?php
namespace MailPoet\Form\Block;
class Heading {
public function render(array $block, array $formSettings): string {
return '<h2></h2>';
}
}

View File

@ -7,6 +7,7 @@ use MailPoet\Form\Block\Column;
use MailPoet\Form\Block\Columns;
use MailPoet\Form\Block\Date;
use MailPoet\Form\Block\Divider;
use MailPoet\Form\Block\Heading;
use MailPoet\Form\Block\Html;
use MailPoet\Form\Block\Radio;
use MailPoet\Form\Block\Segment;
@ -52,6 +53,9 @@ class BlocksRenderer {
/** @var Columns */
private $columns;
/** @var Heading */
private $heading;
public function __construct(
Checkbox $checkbox,
Column $column,
@ -59,6 +63,7 @@ class BlocksRenderer {
Date $date,
Divider $divider,
Html $html,
Heading $heading,
Radio $radio,
Segment $segment,
Select $select,
@ -78,6 +83,7 @@ class BlocksRenderer {
$this->submit = $submit;
$this->text = $text;
$this->textarea = $textarea;
$this->heading = $heading;
}
public function renderBlock(array $block = [], array $formSettings): string {
@ -87,6 +93,10 @@ class BlocksRenderer {
$html .= $this->html->render($block, $formSettings);
break;
case 'heading':
$html .= $this->heading->render($block, $formSettings);
break;
case 'divider':
$html .= $this->divider->render();
break;

View File

@ -0,0 +1,20 @@
<?php
namespace MailPoet\Test\Form\Block;
use MailPoet\Form\Block\Heading;
class HeadingTest extends \MailPoetUnitTest {
/** @var Heading */
private $heading;
public function _before() {
parent::_before();
$this->heading = new Heading();
}
public function testItShouldRenderHeading() {
$html = $this->heading->render([], []);
expect($html)->startsWith('<h2');
}
}