first commit
This commit is contained in:
86
JsonForm.php
Executable file
86
JsonForm.php
Executable file
@ -0,0 +1,86 @@
|
||||
<?php
|
||||
|
||||
namespace itguild\forms\form;
|
||||
|
||||
use itguild\forms\form\builders\Builder;
|
||||
use itguild\forms\form\builders\LabelBuilder;
|
||||
use itguild\forms\form\mappers\JsonInputMapper;
|
||||
use itguild\forms\form\traits\CreateParams;
|
||||
|
||||
class JsonForm
|
||||
{
|
||||
use CreateParams;
|
||||
private $jsonData;
|
||||
|
||||
private $html = '';
|
||||
|
||||
public function __construct($json)
|
||||
{
|
||||
$this->jsonData = json_decode($json, true);
|
||||
|
||||
|
||||
}
|
||||
|
||||
public function beginForm($params = []): string
|
||||
{
|
||||
$paramsString = $this->createParams($params);
|
||||
return "<form $paramsString >";
|
||||
}
|
||||
|
||||
public function endForm(): string
|
||||
{
|
||||
return "</form>";
|
||||
|
||||
}
|
||||
|
||||
public function convertHTML(): void
|
||||
{
|
||||
$this->html .= $this->beginForm($this->jsonData['meta']);
|
||||
|
||||
foreach ($this->jsonData['data'] as $item) {
|
||||
|
||||
if (isset($item["type"]) and isset($item["name"])) {
|
||||
|
||||
/**
|
||||
* @var $builder Builder
|
||||
*/
|
||||
$builder = JsonInputMapper::getBuilder($item["type"]);
|
||||
unset($item["type"]);
|
||||
$name = $item["name"];
|
||||
unset($item["name"]);
|
||||
$label = '';
|
||||
if (isset($item['label'])) {
|
||||
$label = $this->createLabel($item['label']);
|
||||
}
|
||||
unset($item['label']);
|
||||
$input = $builder::build($name, $item);
|
||||
$input->setLabel($label)->create();
|
||||
$this->html .= $input->fetch();
|
||||
}
|
||||
}
|
||||
|
||||
$this->html .= $this->endForm();
|
||||
//return $this->fetch($html);
|
||||
}
|
||||
|
||||
private function createLabel($labelParams)
|
||||
{
|
||||
$title = '';
|
||||
if(isset($labelParams['title'])){
|
||||
$title = $labelParams['title'];
|
||||
unset($labelParams['title']);
|
||||
}
|
||||
return LabelBuilder::build($title, $labelParams);
|
||||
}
|
||||
|
||||
public function render(): void
|
||||
{
|
||||
echo $this->html;
|
||||
}
|
||||
|
||||
public function fetch(): string
|
||||
{
|
||||
return $this->html;
|
||||
}
|
||||
|
||||
}
|
Reference in New Issue
Block a user