first
This commit is contained in:
109
src/ActiveForm.php
Executable file
109
src/ActiveForm.php
Executable file
@ -0,0 +1,109 @@
|
||||
<?php
|
||||
|
||||
namespace itguild\forms;
|
||||
|
||||
use itguild\forms\builders\ButtonBuilder;
|
||||
use itguild\forms\builders\CheckBoxBuilder;
|
||||
use itguild\forms\builders\HiddenBuilder;
|
||||
use itguild\forms\builders\RadioButtonBuilder;
|
||||
use itguild\forms\builders\SelectBuilder;
|
||||
use itguild\forms\builders\TextAreaBuilder;
|
||||
use itguild\forms\builders\TextInputBuilder;
|
||||
use itguild\forms\debug\Debug;
|
||||
use itguild\forms\inputs\BaseInput;
|
||||
use itguild\forms\inputs\Button;
|
||||
use itguild\forms\inputs\Checkbox;
|
||||
use itguild\forms\inputs\Hidden;
|
||||
use itguild\forms\inputs\RadioButton;
|
||||
use itguild\forms\inputs\Select;
|
||||
use itguild\forms\inputs\TextArea;
|
||||
use itguild\forms\inputs\TextInput;
|
||||
use itguild\forms\templates\Template;
|
||||
|
||||
class ActiveForm
|
||||
{
|
||||
private BaseInput $fieldObject;
|
||||
|
||||
|
||||
/**
|
||||
* @param string $action
|
||||
* @return void
|
||||
*/
|
||||
public function beginForm(string $action): void
|
||||
{
|
||||
echo "<form method='POST' action='$action'>";
|
||||
}
|
||||
|
||||
/**
|
||||
* @return void
|
||||
*/
|
||||
public function endForm(): void
|
||||
{
|
||||
echo "</form>";
|
||||
|
||||
}
|
||||
|
||||
public function field($class, string $name, array $params = [])
|
||||
{
|
||||
if ($class === Select::class){
|
||||
$this->fieldObject = SelectBuilder::build($name, $params);
|
||||
}
|
||||
elseif ($class === TextInput::class){
|
||||
$this->fieldObject = TextInputBuilder::build($name, $params);
|
||||
}
|
||||
elseif ($class === TextArea::class){
|
||||
$this->fieldObject = TextAreaBuilder::build($name, $params);
|
||||
}
|
||||
elseif ($class === Checkbox::class) {
|
||||
$this->fieldObject = CheckBoxBuilder::build($name, $params);
|
||||
}
|
||||
elseif ($class === Button::class) {
|
||||
$this->fieldObject = ButtonBuilder::build($name, $params);
|
||||
}
|
||||
elseif ($class === RadioButton::class){
|
||||
$this->fieldObject = RadioButtonBuilder::build($name, $params);
|
||||
}
|
||||
elseif ($class === Hidden::class){
|
||||
$this->fieldObject = HiddenBuilder::build($name, $params);
|
||||
}
|
||||
else {
|
||||
$this->fieldObject = new $class($name, $params);
|
||||
}
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
public function setLabel(string $title): self
|
||||
{
|
||||
$this->fieldObject->setLabel($title);
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
public function setOptions(array $options): self
|
||||
{
|
||||
$this->fieldObject->setOptions($options);
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
public function setTemplate($template): self
|
||||
{
|
||||
$this->fieldObject->setTemplate($template);
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
public function render()
|
||||
{
|
||||
$this->fieldObject->create();
|
||||
$this->fieldObject->render();
|
||||
}
|
||||
|
||||
public function fetch()
|
||||
{
|
||||
$this->fieldObject->create();
|
||||
return $this->fieldObject->fetch();
|
||||
}
|
||||
|
||||
}
|
110
src/Form.php
Executable file
110
src/Form.php
Executable file
@ -0,0 +1,110 @@
|
||||
<?php
|
||||
|
||||
namespace itguild\forms;
|
||||
|
||||
use itguild\forms\inputs\Checkbox;
|
||||
use itguild\forms\inputs\Select;
|
||||
use itguild\forms\inputs\TextInput;
|
||||
use itguild\forms\inputs\Label;
|
||||
use itguild\forms\inputs\RadioButton;
|
||||
use itguild\forms\inputs\TextArea;
|
||||
use itguild\forms\inputs\Button;
|
||||
|
||||
class Form {
|
||||
|
||||
/**
|
||||
* @param string $action
|
||||
* @return void
|
||||
*/
|
||||
public function beginForm(string $action): void
|
||||
{
|
||||
echo "<form method='POST' action='$action'>";
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $name
|
||||
* @param array $paramsArray
|
||||
* @return void
|
||||
*/
|
||||
|
||||
public function textInput(string $name, array $paramsArray = []): void
|
||||
{
|
||||
TextInput::build($name, $paramsArray);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $name
|
||||
* @param string $value
|
||||
* @param array $paramsArray
|
||||
* @return void
|
||||
*/
|
||||
public function checkBox(string $name, string $value, array $paramsArray = []): void
|
||||
{
|
||||
Checkbox::build($name, $value, $paramsArray);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $title
|
||||
* @param array $paramsArray
|
||||
* @return void
|
||||
*/
|
||||
public function label(string $title, array $paramsArray = []): void
|
||||
{
|
||||
Label::build($title, $paramsArray);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $name
|
||||
* @param array $paramsArray
|
||||
* @return void
|
||||
*/
|
||||
public function radio(string $name, array $paramsArray = []): void
|
||||
{
|
||||
RadioButton::build($name, $paramsArray);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $name
|
||||
* @param string $value
|
||||
* @param array $paramsArray
|
||||
* @return void
|
||||
*/
|
||||
public function textarea(string $name, string $value = "", array $paramsArray = []): void
|
||||
{
|
||||
TextArea::build($name, $value, $paramsArray);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $name
|
||||
* @param array $options
|
||||
* @param $value
|
||||
* @param array $paramsArray
|
||||
* @return void
|
||||
*/
|
||||
public function select(string $name, array $options = [], $value = null, array $paramsArray = []): void
|
||||
{
|
||||
Select::build($name, $options, $value, $paramsArray);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $name
|
||||
* @param string $value
|
||||
* @param array $paramsArray
|
||||
* @return void
|
||||
*/
|
||||
public function button(string $name, string $value, array $paramsArray = []): void
|
||||
{
|
||||
Button::build($name, $value, $paramsArray);
|
||||
}
|
||||
|
||||
/**
|
||||
* @return void
|
||||
*/
|
||||
public function endForm(): void
|
||||
{
|
||||
echo "</form>";
|
||||
|
||||
}
|
||||
}
|
89
src/JsonForm.php
Executable file
89
src/JsonForm.php
Executable file
@ -0,0 +1,89 @@
|
||||
<?php
|
||||
|
||||
namespace itguild\forms;
|
||||
|
||||
use itguild\forms\builders\Builder;
|
||||
use itguild\forms\builders\LabelBuilder;
|
||||
use itguild\forms\debug\Debug;
|
||||
use itguild\forms\mappers\JsonInputMapper;
|
||||
use itguild\forms\inputs\BaseInput;
|
||||
use itguild\forms\ActiveForm;
|
||||
use itguild\forms\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;
|
||||
}
|
||||
|
||||
}
|
12
src/builders/Builder.php
Executable file
12
src/builders/Builder.php
Executable file
@ -0,0 +1,12 @@
|
||||
<?php
|
||||
|
||||
namespace itguild\forms\builders;
|
||||
|
||||
use itguild\forms\inputs\BaseInput;
|
||||
|
||||
interface Builder
|
||||
{
|
||||
|
||||
public static function build(string $name, array $params = []): BaseInput;
|
||||
|
||||
}
|
18
src/builders/ButtonBuilder.php
Executable file
18
src/builders/ButtonBuilder.php
Executable file
@ -0,0 +1,18 @@
|
||||
<?php
|
||||
|
||||
namespace itguild\forms\builders;
|
||||
use itguild\forms\inputs\Button;
|
||||
class ButtonBuilder
|
||||
{
|
||||
|
||||
public static function build(string $name, array $params = [])
|
||||
{
|
||||
$value = $params['value'] ?? null;
|
||||
$typeInput = $params['typeInput'] ?? null;
|
||||
unset($params['value']);
|
||||
unset($params['typeInput']);
|
||||
|
||||
return new Button(name: $name, value: $value, typeInput: $typeInput, paramsArray: $params);
|
||||
}
|
||||
|
||||
}
|
16
src/builders/CheckBoxBuilder.php
Executable file
16
src/builders/CheckBoxBuilder.php
Executable file
@ -0,0 +1,16 @@
|
||||
<?php
|
||||
|
||||
namespace itguild\forms\builders;
|
||||
use itguild\forms\inputs\Checkbox;
|
||||
|
||||
|
||||
class CheckBoxBuilder
|
||||
{
|
||||
public static function build(string $name, array $params = []): Checkbox
|
||||
{
|
||||
$value = $params['value'] ?? "";
|
||||
unset($params['value']);
|
||||
|
||||
return new Checkbox(name: $name, value: $value, paramsArray: $params);
|
||||
}
|
||||
}
|
17
src/builders/HiddenBuilder.php
Normal file
17
src/builders/HiddenBuilder.php
Normal file
@ -0,0 +1,17 @@
|
||||
<?php
|
||||
|
||||
namespace itguild\forms\builders;
|
||||
|
||||
use itguild\forms\inputs\Checkbox;
|
||||
use itguild\forms\inputs\Hidden;
|
||||
|
||||
class HiddenBuilder
|
||||
{
|
||||
public static function build(string $name, array $params = []): Hidden
|
||||
{
|
||||
$value = $params['value'] ?? "";
|
||||
unset($params['value']);
|
||||
|
||||
return new Hidden(name: $name, value: $value, paramsArray: $params);
|
||||
}
|
||||
}
|
14
src/builders/LabelBuilder.php
Executable file
14
src/builders/LabelBuilder.php
Executable file
@ -0,0 +1,14 @@
|
||||
<?php
|
||||
|
||||
namespace itguild\forms\builders;
|
||||
|
||||
use itguild\forms\inputs\Label;
|
||||
use itguild\forms\inputs\RadioButton;
|
||||
|
||||
class LabelBuilder
|
||||
{
|
||||
public static function build(string $title, array $params = [])
|
||||
{
|
||||
return new Label(title: $title, paramsArray: $params);
|
||||
}
|
||||
}
|
14
src/builders/RadioButtonBuilder.php
Executable file
14
src/builders/RadioButtonBuilder.php
Executable file
@ -0,0 +1,14 @@
|
||||
<?php
|
||||
|
||||
namespace itguild\forms\builders;
|
||||
|
||||
use itguild\forms\inputs\RadioButton;
|
||||
|
||||
class RadioButtonBuilder
|
||||
{
|
||||
public static function build(string $name, array $params = [])
|
||||
{
|
||||
|
||||
return new RadioButton(name: $name, paramsArray: $params);
|
||||
}
|
||||
}
|
21
src/builders/SelectBuilder.php
Executable file
21
src/builders/SelectBuilder.php
Executable file
@ -0,0 +1,21 @@
|
||||
<?php
|
||||
|
||||
namespace itguild\forms\builders;
|
||||
|
||||
use itguild\forms\debug\Debug;
|
||||
use itguild\forms\inputs\Select;
|
||||
|
||||
class SelectBuilder
|
||||
{
|
||||
|
||||
public static function build(string $name, array $params = [])
|
||||
{
|
||||
$value = $params['value'] ?? null;
|
||||
unset($params['value']);
|
||||
$options = $params['options'] ?? [];
|
||||
unset($params['options']);
|
||||
|
||||
return new Select(name: $name, options: $options, value: $value, paramsArray: $params);
|
||||
}
|
||||
|
||||
}
|
17
src/builders/TextAreaBuilder.php
Executable file
17
src/builders/TextAreaBuilder.php
Executable file
@ -0,0 +1,17 @@
|
||||
<?php
|
||||
|
||||
namespace itguild\forms\builders;
|
||||
|
||||
|
||||
use itguild\forms\inputs\TextArea;
|
||||
|
||||
class TextAreaBuilder
|
||||
{
|
||||
public static function build(string $name, array $params = [])
|
||||
{
|
||||
$value = $params['value'] ?? "";
|
||||
unset($params['value']);
|
||||
|
||||
return new TextArea(name: $name, value: $value, paramsArray: $params);
|
||||
}
|
||||
}
|
15
src/builders/TextInputBuilder.php
Executable file
15
src/builders/TextInputBuilder.php
Executable file
@ -0,0 +1,15 @@
|
||||
<?php
|
||||
|
||||
namespace itguild\forms\builders;
|
||||
|
||||
|
||||
use itguild\forms\inputs\BaseInput;
|
||||
use itguild\forms\inputs\TextInput;
|
||||
|
||||
class TextInputBuilder implements Builder
|
||||
{
|
||||
public static function build(string $name, array $params = []): BaseInput
|
||||
{
|
||||
return new TextInput(name: $name, paramsArray: $params);
|
||||
}
|
||||
}
|
29
src/debug/Debug.php
Executable file
29
src/debug/Debug.php
Executable file
@ -0,0 +1,29 @@
|
||||
<?php
|
||||
|
||||
namespace itguild\forms\debug;
|
||||
|
||||
class Debug
|
||||
{
|
||||
/**
|
||||
* @param $content
|
||||
* @return void
|
||||
*/
|
||||
public static function prn($content)
|
||||
{
|
||||
echo '<pre style="background: lightgray; border: 1px solid black; padding: 2px">';
|
||||
print_r($content);
|
||||
echo '</pre>';
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $content
|
||||
* @return void
|
||||
*/
|
||||
public static function dd($content)
|
||||
{
|
||||
echo '<pre style="background: lightgray; border: 1px solid black; padding: 2px">';
|
||||
print_r($content);
|
||||
echo '</pre>';
|
||||
die();
|
||||
}
|
||||
}
|
11
src/exceptions/CreateFormException.php
Normal file
11
src/exceptions/CreateFormException.php
Normal file
@ -0,0 +1,11 @@
|
||||
<?php
|
||||
|
||||
namespace itguild\forms\exceptions;
|
||||
|
||||
class CreateFormException extends \Exception
|
||||
{
|
||||
function __construct(string $msg)
|
||||
{
|
||||
$this->message = "Create form error: " . $msg;
|
||||
}
|
||||
}
|
13
src/exceptions/FieldTypeNotFound.php
Normal file
13
src/exceptions/FieldTypeNotFound.php
Normal file
@ -0,0 +1,13 @@
|
||||
<?php
|
||||
|
||||
namespace itguild\forms\exceptions;
|
||||
|
||||
class FieldTypeNotFound extends \Exception
|
||||
{
|
||||
|
||||
function __construct(string $type)
|
||||
{
|
||||
$this->message = "Тип поля $type не найден";
|
||||
}
|
||||
|
||||
}
|
11
src/exceptions/FormNotFoundException.php
Normal file
11
src/exceptions/FormNotFoundException.php
Normal file
@ -0,0 +1,11 @@
|
||||
<?php
|
||||
|
||||
namespace itguild\forms\exceptions;
|
||||
|
||||
class FormNotFoundException extends \Exception
|
||||
{
|
||||
function __construct($formId)
|
||||
{
|
||||
$this -> message = "Форма $formId не найдена";
|
||||
}
|
||||
}
|
11
src/exceptions/FormResultNotFoundException.php
Normal file
11
src/exceptions/FormResultNotFoundException.php
Normal file
@ -0,0 +1,11 @@
|
||||
<?php
|
||||
|
||||
namespace itguild\forms\exceptions;
|
||||
|
||||
class FormResultNotFoundException extends \Exception
|
||||
{
|
||||
function __construct($id)
|
||||
{
|
||||
$this -> message = "Ответ формы $id не найдена";
|
||||
}
|
||||
}
|
22
src/helpers/TranslitorHelper.php
Normal file
22
src/helpers/TranslitorHelper.php
Normal file
@ -0,0 +1,22 @@
|
||||
<?php
|
||||
|
||||
namespace itguild\forms\helpers;
|
||||
|
||||
class TranslitorHelper
|
||||
{
|
||||
public static function translit($str){
|
||||
$russian = array('А', 'Б', 'В', 'Г', 'Д', 'Е', 'Ё', 'Ж', 'З',
|
||||
'И', 'Й', 'К', 'Л', 'М', 'Н', 'О', 'П', 'Р', 'С', 'Т', 'У',
|
||||
'Ф', 'Х', 'Ц', 'Ч', 'Ш', 'Щ', 'Ъ', 'Ы', 'Ь', 'Э', 'Ю', 'Я',
|
||||
'а', 'б', 'в', 'г', 'д', 'е', 'ё', 'ж', 'з', 'и', 'й', 'к',
|
||||
'л', 'м', 'н', 'о', 'п', 'р', 'с', 'т', 'у', 'ф', 'х', 'ц',
|
||||
'ч', 'ш', 'щ', 'ъ', 'ы', 'ь', 'э', 'ю', 'я', ' ');
|
||||
$translit = array('A', 'B', 'V', 'G', 'D', 'E', 'E', 'Gh', 'Z',
|
||||
'I', 'Y', 'K', 'L', 'M', 'N', 'O', 'P', 'R', 'S', 'T', 'U', 'F',
|
||||
'H', 'C', 'Ch', 'Sh', 'Sch', 'Y', 'Y', 'Y', 'E', 'Yu', 'Ya', 'a',
|
||||
'b', 'v', 'g', 'd', 'e', 'e', 'gh', 'z', 'i', 'y', 'k', 'l', 'm',
|
||||
'n', 'o', 'p', 'r', 's', 't', 'u', 'f', 'h', 'c', 'ch', 'sh', 'sch',
|
||||
'y', 'y', 'y', 'e', 'yu', 'ya', '_');
|
||||
return str_replace($russian, $translit, $str);
|
||||
}
|
||||
}
|
66
src/inputs/BaseInput.php
Executable file
66
src/inputs/BaseInput.php
Executable file
@ -0,0 +1,66 @@
|
||||
<?php
|
||||
|
||||
namespace itguild\forms\inputs;
|
||||
|
||||
use itguild\forms\templates\Template;
|
||||
|
||||
abstract class BaseInput
|
||||
{
|
||||
protected Template $inputTemplate;
|
||||
protected bool $hasLabel = false;
|
||||
protected string $html = '';
|
||||
protected string|Label $label = "";
|
||||
protected string $labelString = "";
|
||||
|
||||
/**
|
||||
* @return void
|
||||
*/
|
||||
public function render(): void
|
||||
{
|
||||
echo $this->html;
|
||||
}
|
||||
|
||||
public function fetch(): string
|
||||
{
|
||||
return $this->html;
|
||||
}
|
||||
|
||||
public abstract function create();
|
||||
|
||||
/**
|
||||
* @param string|Label $title
|
||||
* @return $this
|
||||
*/
|
||||
public function setLabel(string|Label $title): self
|
||||
{
|
||||
$this->hasLabel = true;
|
||||
$this->label= $title;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
protected function createLabel()
|
||||
{
|
||||
if($this->hasLabel) {
|
||||
if(is_string($this->label)){
|
||||
$this->labelString = "<label>$this->label</label>";
|
||||
}
|
||||
else {
|
||||
$this->labelString= $this->label->create()->fetch();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $template
|
||||
* @return $this
|
||||
*/
|
||||
public function setTemplate($template): self
|
||||
{
|
||||
$this->inputTemplate = new $template();
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
|
||||
}
|
60
src/inputs/Button.php
Executable file
60
src/inputs/Button.php
Executable file
@ -0,0 +1,60 @@
|
||||
<?php
|
||||
|
||||
namespace itguild\forms\inputs;
|
||||
|
||||
use itguild\forms\templates\Simple\SimpleTemplate;
|
||||
use itguild\forms\traits\CreateParams;
|
||||
use itguild\forms\inputs\BaseInput;
|
||||
|
||||
class Button extends BaseInput
|
||||
{
|
||||
use CreateParams;
|
||||
private $typeInput;
|
||||
private string $name;
|
||||
private string $value;
|
||||
private array $paramsArray;
|
||||
|
||||
/**
|
||||
* @param string $name
|
||||
* @param string $value
|
||||
* @param array $paramsArray
|
||||
*/
|
||||
public function __construct(string $name, string $value, $typeInput, array $paramsArray = [])
|
||||
{
|
||||
$this->typeInput = $typeInput;
|
||||
$this->name = $name;
|
||||
$this->paramsArray = $paramsArray;
|
||||
$this->value = $value;
|
||||
$this->inputTemplate = new SimpleTemplate();
|
||||
}
|
||||
|
||||
/**
|
||||
* @return $this
|
||||
*/
|
||||
public function create(): self
|
||||
{
|
||||
$paramsString = $this->createParams($this->paramsArray);
|
||||
$label = "";
|
||||
$button = "<input type='$this->typeInput' value='$this->value' name='$this->name' $paramsString>";
|
||||
|
||||
$this->createLabel();
|
||||
|
||||
$this->html = str_replace('{input}', $button, $this->inputTemplate->getInputTemplate());
|
||||
$this->html = str_replace('{label}', $this->labelString, $this->html);
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $name
|
||||
* @param string $value
|
||||
* @param array $paramsArray
|
||||
* @return void
|
||||
*/
|
||||
public static function build( string $name, string $value, string $typeInput, array $paramsArray = []): void
|
||||
{
|
||||
$button = new self($name, $value, $typeInput, $paramsArray);
|
||||
$button->create()->render();
|
||||
}
|
||||
|
||||
}
|
61
src/inputs/Checkbox.php
Executable file
61
src/inputs/Checkbox.php
Executable file
@ -0,0 +1,61 @@
|
||||
<?php
|
||||
|
||||
namespace itguild\forms\inputs;
|
||||
|
||||
use itguild\forms\templates\Simple\SimpleTemplate;
|
||||
use itguild\forms\traits\CreateParams;
|
||||
use itguild\forms\inputs\BaseInput;
|
||||
|
||||
class Checkbox extends BaseInput
|
||||
{
|
||||
use CreateParams;
|
||||
|
||||
private string $name;
|
||||
private string $value;
|
||||
private array $paramsArray;
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* @param string $name
|
||||
* @param string $value
|
||||
* @param array $paramsArray
|
||||
*/
|
||||
public function __construct(string $name, string $value = '', array $paramsArray = [])
|
||||
{
|
||||
$this->name = $name;
|
||||
$this->value = $value;
|
||||
$this->paramsArray = $paramsArray;
|
||||
$this->inputTemplate = new SimpleTemplate();
|
||||
}
|
||||
|
||||
/**
|
||||
* @return $this
|
||||
*/
|
||||
public function create(): self
|
||||
{
|
||||
$paramsString = $this->createParams($this->paramsArray);
|
||||
$checkBox = "<input name='$this->name' type='checkbox' value='$this->value' $paramsString >";
|
||||
$label = "";
|
||||
|
||||
$this->createLabel();
|
||||
|
||||
$this->html = str_replace('{input}', $checkBox, $this->inputTemplate->getInputTemplate());
|
||||
$this->html = str_replace('{label}', $this->labelString, $this->html);
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $name
|
||||
* @param string $value
|
||||
* @param array $paramsArray
|
||||
* @return void
|
||||
*/
|
||||
public static function build(string $name, string $value, array $paramsArray): void
|
||||
{
|
||||
$checkBox = new self($name, $value, $paramsArray);
|
||||
$checkBox->create()->render();
|
||||
|
||||
}
|
||||
}
|
60
src/inputs/Hidden.php
Normal file
60
src/inputs/Hidden.php
Normal file
@ -0,0 +1,60 @@
|
||||
<?php
|
||||
|
||||
namespace itguild\forms\inputs;
|
||||
|
||||
use itguild\forms\templates\Simple\SimpleTemplate;
|
||||
use itguild\forms\traits\CreateParams;
|
||||
|
||||
class Hidden extends BaseInput
|
||||
{
|
||||
use CreateParams;
|
||||
|
||||
private string $name;
|
||||
private string $value;
|
||||
private array $paramsArray;
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* @param string $name
|
||||
* @param string $value
|
||||
* @param array $paramsArray
|
||||
*/
|
||||
public function __construct(string $name, string $value = '', array $paramsArray = [])
|
||||
{
|
||||
$this->name = $name;
|
||||
$this->value = $value;
|
||||
$this->paramsArray = $paramsArray;
|
||||
$this->inputTemplate = new SimpleTemplate();
|
||||
}
|
||||
|
||||
/**
|
||||
* @return $this
|
||||
*/
|
||||
public function create(): self
|
||||
{
|
||||
$paramsString = $this->createParams($this->paramsArray);
|
||||
$hidden = "<input name='$this->name' type='hidden' value='$this->value' $paramsString >";
|
||||
$label = "";
|
||||
|
||||
$this->createLabel();
|
||||
|
||||
$this->html = str_replace('{input}', $hidden, $this->inputTemplate->getInputTemplate());
|
||||
$this->html = str_replace('{label}', $this->labelString, $this->html);
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $name
|
||||
* @param string $value
|
||||
* @param array $paramsArray
|
||||
* @return void
|
||||
*/
|
||||
public static function build(string $name, string $value, array $paramsArray): void
|
||||
{
|
||||
$hidden = new self($name, $value, $paramsArray);
|
||||
$hidden->create()->render();
|
||||
|
||||
}
|
||||
}
|
59
src/inputs/Label.php
Executable file
59
src/inputs/Label.php
Executable file
@ -0,0 +1,59 @@
|
||||
<?php
|
||||
|
||||
namespace itguild\forms\inputs;
|
||||
|
||||
use itguild\forms\traits\CreateParams;
|
||||
use itguild\forms\inputs\BaseInput;
|
||||
|
||||
class Label extends BaseInput
|
||||
{
|
||||
use CreateParams;
|
||||
|
||||
private string $title;
|
||||
|
||||
private array $paramsArray;
|
||||
|
||||
|
||||
/**
|
||||
* @param string $title
|
||||
* @param array $paramsArray
|
||||
*/
|
||||
public function __construct(string $title, array $paramsArray = [])
|
||||
{
|
||||
$this->title = $title;
|
||||
$this->paramsArray = $paramsArray;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return $this
|
||||
*/
|
||||
public function create(): self
|
||||
{
|
||||
$paramsString = $this->createParams($this->paramsArray);
|
||||
$this->html = "<label $paramsString >$this->title</label>";
|
||||
|
||||
|
||||
return $this;
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @return string
|
||||
*/
|
||||
public function getHtml(): string
|
||||
{
|
||||
return $this->html;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $title
|
||||
* @param array $paramsArray
|
||||
* @return void
|
||||
*/
|
||||
public static function build(string $title, array $paramsArray = [])
|
||||
{
|
||||
$label = new self($title, $paramsArray);
|
||||
$label->create()->render();
|
||||
}
|
||||
|
||||
}
|
63
src/inputs/RadioButton.php
Executable file
63
src/inputs/RadioButton.php
Executable file
@ -0,0 +1,63 @@
|
||||
<?php
|
||||
|
||||
namespace itguild\forms\inputs;
|
||||
use itguild\forms\templates\Simple\SimpleTemplate;
|
||||
use itguild\forms\traits\CreateOption;
|
||||
use itguild\forms\traits\CreateParams;
|
||||
use itguild\forms\inputs\BaseInput;
|
||||
class RadioButton extends BaseInput
|
||||
{
|
||||
use CreateParams;
|
||||
use CreateOption;
|
||||
private $name;
|
||||
private $paramsArray;
|
||||
private $options = [];
|
||||
private $value;
|
||||
|
||||
|
||||
public function __construct(string $name, array $paramsArray = [])
|
||||
{
|
||||
$this->name = $name;
|
||||
$this->paramsArray = $paramsArray;
|
||||
$this->inputTemplate = new SimpleTemplate();
|
||||
}
|
||||
|
||||
/**
|
||||
* @return $this
|
||||
*/
|
||||
public function create(): self
|
||||
{
|
||||
$paramsString = $this->createParams($this->paramsArray);
|
||||
$optionsString = $this->createOption($this->options, $this->value);
|
||||
$radioButton = "<input name='$this->name' type='radio' $paramsString>$optionsString";
|
||||
$label = "";
|
||||
|
||||
$this->createLabel();
|
||||
|
||||
$this->html = str_replace('{input}', $radioButton, $this->inputTemplate->getInputTemplate());
|
||||
$this->html = str_replace('{label}', $this->labelString, $this->html);
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $name
|
||||
* @param array $paramsArray
|
||||
* @return void
|
||||
*/
|
||||
public static function build(string $name, array $paramsArray = []): void
|
||||
{
|
||||
$radioButton = new self($name, $paramsArray);
|
||||
$radioButton->create()->render();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @param $options
|
||||
* @return $this
|
||||
*/
|
||||
public function setOptions($options)
|
||||
{
|
||||
$this->options = array_merge($options, $this->options);
|
||||
return $this;
|
||||
}
|
||||
}
|
84
src/inputs/Select.php
Executable file
84
src/inputs/Select.php
Executable file
@ -0,0 +1,84 @@
|
||||
<?php
|
||||
|
||||
namespace itguild\forms\inputs;
|
||||
|
||||
use itguild\forms\debug\Debug;
|
||||
use itguild\forms\templates\Template;
|
||||
use itguild\forms\traits\CreateOption;
|
||||
use itguild\forms\traits\CreateParams;
|
||||
use itguild\forms\inputs\BaseInput;
|
||||
use itguild\forms\templates\Simple\SimpleTemplate;
|
||||
use itguild\forms\templates\bootstrap5\Bootstrap5Template;
|
||||
|
||||
class Select extends BaseInput
|
||||
{
|
||||
use CreateParams;
|
||||
use CreateOption;
|
||||
private $name;
|
||||
private $options;
|
||||
|
||||
private $value;
|
||||
private $paramsArray;
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* @param string $name
|
||||
* @param array $options
|
||||
* @param $value
|
||||
* @param array $paramsArray
|
||||
*/
|
||||
public function __construct(string $name, array $options = [], $value = null, array $paramsArray = [])
|
||||
{
|
||||
$this->name = $name;
|
||||
$this->options = $options;
|
||||
$this->value = $value;
|
||||
$this->paramsArray = $paramsArray;
|
||||
$this->inputTemplate = new SimpleTemplate();
|
||||
}
|
||||
|
||||
/**
|
||||
* @return $this
|
||||
*/
|
||||
public function create(): self
|
||||
{
|
||||
$paramsString = $this->createParams($this->paramsArray);
|
||||
$optionsString = $this->createOption($this->options, $this->value);
|
||||
$label = "";
|
||||
$select = "<select name='$this->name' $paramsString>$optionsString</select>";
|
||||
|
||||
$this->createLabel();
|
||||
|
||||
$this->html = str_replace('{input}', $select, $this->inputTemplate->getInputTemplate());
|
||||
$this->html = str_replace('{label}', $this->labelString, $this->html);
|
||||
|
||||
return $this;
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $name
|
||||
* @param array $options
|
||||
* @param $value
|
||||
* @param array $paramsArray
|
||||
* @return void
|
||||
*/
|
||||
public static function build(string $name, array $options = [], $value = null, array $paramsArray = []): void
|
||||
{
|
||||
$select = new self($name, $options, $value, $paramsArray);
|
||||
$select->create()->render();
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $options
|
||||
* @return $this
|
||||
*/
|
||||
public function setOptions($options)
|
||||
{
|
||||
$this->options = array_merge($options, $this->options);
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
|
||||
}
|
62
src/inputs/TextArea.php
Executable file
62
src/inputs/TextArea.php
Executable file
@ -0,0 +1,62 @@
|
||||
<?php
|
||||
|
||||
namespace itguild\forms\inputs;
|
||||
|
||||
use itguild\forms\traits\CreateParams;
|
||||
use itguild\forms\inputs\BaseInput;
|
||||
use itguild\forms\templates\bootstrap5\Bootstrap5Template;
|
||||
use itguild\forms\templates\Simple\SimpleTemplate;
|
||||
use itguild\forms\templates\Template;
|
||||
class TextArea extends BaseInput
|
||||
{
|
||||
use CreateParams;
|
||||
|
||||
private $name;
|
||||
private $value;
|
||||
private $paramsArray;
|
||||
|
||||
|
||||
/**
|
||||
* @param string $name
|
||||
* @param string $value
|
||||
* @param array $paramsArray
|
||||
*/
|
||||
public function __construct(string $name, string $value = '', array $paramsArray = [])
|
||||
{
|
||||
$this->name = $name;
|
||||
$this->value = $value;
|
||||
$this->paramsArray = $paramsArray;
|
||||
$this->inputTemplate = new SimpleTemplate();
|
||||
}
|
||||
|
||||
/**
|
||||
* @return $this
|
||||
*/
|
||||
public function create(): self
|
||||
{
|
||||
$paramsString = $this->createParams($this->paramsArray);
|
||||
$label = "";
|
||||
$textarea = "<textarea name='$this->name' $paramsString>$this->value</textarea>";
|
||||
|
||||
$this->createLabel();
|
||||
|
||||
$this->html = str_replace('{input}', $textarea, $this->inputTemplate->getInputTemplate());
|
||||
$this->html = str_replace('{label}', $this->labelString, $this->html);
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @param string $name
|
||||
* @param string $value
|
||||
* @param array $paramsArray
|
||||
* @return void
|
||||
*/
|
||||
public static function build(string $name, string $value, array $paramsArray = []): void
|
||||
{
|
||||
$textarea = new self($name, $value, $paramsArray);
|
||||
$textarea->create()->render();
|
||||
}
|
||||
|
||||
}
|
62
src/inputs/TextInput.php
Executable file
62
src/inputs/TextInput.php
Executable file
@ -0,0 +1,62 @@
|
||||
<?php
|
||||
|
||||
namespace itguild\forms\inputs;
|
||||
|
||||
use itguild\forms\debug\Debug;
|
||||
use itguild\forms\inputs\BaseInput;
|
||||
use itguild\forms\templates\bootstrap5\Bootstrap5Template;
|
||||
use itguild\forms\templates\Simple\SimpleTemplate;
|
||||
use itguild\forms\templates\Template;
|
||||
use itguild\forms\traits\CreateParams;
|
||||
|
||||
class TextInput extends BaseInput
|
||||
{
|
||||
|
||||
use CreateParams;
|
||||
private string $name;
|
||||
private array $paramsArray;
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* @param string $name
|
||||
* @param array $paramsArray
|
||||
*/
|
||||
public function __construct(string $name, array $paramsArray = [])
|
||||
{
|
||||
$this->name = $name;
|
||||
$this->paramsArray = $paramsArray;
|
||||
$this->inputTemplate = new SimpleTemplate();
|
||||
}
|
||||
|
||||
/**
|
||||
* @return self
|
||||
*/
|
||||
public function create(): self
|
||||
{
|
||||
$paramsString = $this->createParams($this->paramsArray);
|
||||
$label = "";
|
||||
$input = "<input name='$this->name' $paramsString >";
|
||||
|
||||
$this->createLabel();
|
||||
|
||||
$this->html = str_replace('{input}', $input, $this->inputTemplate->getInputTemplate());
|
||||
$this->html = str_replace('{label}', $this->labelString, $this->html);
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $name
|
||||
* @param array $paramsArray
|
||||
* @return void
|
||||
*/
|
||||
public static function build(string $name, array $paramsArray = []): void
|
||||
{
|
||||
$input = new self($name, $paramsArray);
|
||||
$input->create()->render();
|
||||
|
||||
}
|
||||
|
||||
}
|
39
src/mappers/JsonInputMapper.php
Executable file
39
src/mappers/JsonInputMapper.php
Executable file
@ -0,0 +1,39 @@
|
||||
<?php
|
||||
|
||||
namespace itguild\forms\mappers;
|
||||
|
||||
use itguild\forms\builders\Builder;
|
||||
use itguild\forms\builders\ButtonBuilder;
|
||||
use itguild\forms\builders\CheckBoxBuilder;
|
||||
use itguild\forms\builders\HiddenBuilder;
|
||||
use itguild\forms\builders\LabelBuilder;
|
||||
use itguild\forms\builders\RadioButtonBuilder;
|
||||
use itguild\forms\builders\SelectBuilder;
|
||||
use itguild\forms\builders\TextAreaBuilder;
|
||||
use itguild\forms\builders\TextInputBuilder;
|
||||
use itguild\forms\inputs\TextInput;
|
||||
|
||||
class JsonInputMapper
|
||||
{
|
||||
private static function getBuilders(): array
|
||||
{
|
||||
return [
|
||||
"textInput" => TextInputBuilder::class,
|
||||
"textArea" => TextAreaBuilder::class,
|
||||
"radio" => RadioButtonBuilder::class,
|
||||
"select" => SelectBuilder::class,
|
||||
"button" => ButtonBuilder::class,
|
||||
"checkbox" => CheckBoxBuilder::class,
|
||||
"hidden" => HiddenBuilder::class,
|
||||
];
|
||||
}
|
||||
|
||||
public static function getBuilder(string $type): string
|
||||
{
|
||||
if(isset(self::getBuilders()[$type])){
|
||||
return self::getBuilders()[$type];
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
}
|
17
src/templates/Simple/SimpleTemplate.php
Executable file
17
src/templates/Simple/SimpleTemplate.php
Executable file
@ -0,0 +1,17 @@
|
||||
<?php
|
||||
|
||||
namespace itguild\forms\templates\Simple;
|
||||
|
||||
use itguild\forms\templates\Template;
|
||||
|
||||
class SimpleTemplate extends Template
|
||||
{
|
||||
|
||||
/**
|
||||
* @return string
|
||||
*/
|
||||
public static function getInputTemplate(): string
|
||||
{
|
||||
return "<div class='form-group'>{label}<br>{input}</div>";
|
||||
}
|
||||
}
|
11
src/templates/Template.php
Executable file
11
src/templates/Template.php
Executable file
@ -0,0 +1,11 @@
|
||||
<?php
|
||||
|
||||
namespace itguild\forms\templates;
|
||||
|
||||
abstract class Template
|
||||
{
|
||||
|
||||
abstract static function getInputTemplate();
|
||||
|
||||
|
||||
}
|
37
src/templates/bootstrap5/Bootstrap5Template.php
Executable file
37
src/templates/bootstrap5/Bootstrap5Template.php
Executable file
@ -0,0 +1,37 @@
|
||||
<?php
|
||||
|
||||
namespace itguild\forms\templates\bootstrap5;
|
||||
|
||||
use itguild\forms\templates\Template;
|
||||
|
||||
class Bootstrap5Template extends Template
|
||||
{
|
||||
|
||||
/**
|
||||
* @return string
|
||||
*/
|
||||
public static function getInputTemplate(): string
|
||||
{
|
||||
return "<div class='form-group'>{label}{input}</div>";
|
||||
}
|
||||
public static function getTextAreaTemplate(): string
|
||||
{
|
||||
return "<div class='form-group'>{label}{textarea}</div>";
|
||||
}
|
||||
public static function getSelectTemplate(): string
|
||||
{
|
||||
return "<div class='form-group'>{label}{select}</div>";
|
||||
}
|
||||
public static function getRadioTemplate(): string
|
||||
{
|
||||
return "<div class='form-group'>{label}{radio}</div>";
|
||||
}
|
||||
public static function getCheckBoxTemplate(): string
|
||||
{
|
||||
return "<div class='form-group'>{label}{checkbox}</div>";
|
||||
}
|
||||
public static function getButtonTemplate(): string
|
||||
{
|
||||
return "<div class='form-group'>{label}{button}</div>";
|
||||
}
|
||||
}
|
21
src/traits/CreateOption.php
Executable file
21
src/traits/CreateOption.php
Executable file
@ -0,0 +1,21 @@
|
||||
<?php
|
||||
|
||||
namespace itguild\forms\traits;
|
||||
|
||||
trait CreateOption
|
||||
{
|
||||
/**
|
||||
* @param array $options
|
||||
* @param $value
|
||||
* @return string
|
||||
*/
|
||||
public function createOption(array $options, $value = null): string
|
||||
{
|
||||
$optionsString = "";
|
||||
foreach ($options as $val => $title){
|
||||
$selected = (int)$value === $val ? "selected" : "";
|
||||
$optionsString .= "<option $selected value='$val'>$title</option>";
|
||||
}
|
||||
return $optionsString;
|
||||
}
|
||||
}
|
26
src/traits/CreateParams.php
Executable file
26
src/traits/CreateParams.php
Executable file
@ -0,0 +1,26 @@
|
||||
<?php
|
||||
|
||||
namespace itguild\forms\traits;
|
||||
|
||||
use itguild\forms\debug\Debug;
|
||||
|
||||
trait CreateParams
|
||||
{
|
||||
|
||||
/**
|
||||
* @param array $data
|
||||
* @return string
|
||||
*/
|
||||
public function createParams(array $data = []): string
|
||||
{
|
||||
$paramsString = "";
|
||||
foreach($data as $key => $param){
|
||||
if(is_string($param)){
|
||||
$paramsString .= $key . "='" . $param . "'";
|
||||
}
|
||||
}
|
||||
|
||||
return $paramsString;
|
||||
}
|
||||
|
||||
}
|
Reference in New Issue
Block a user