first commit
This commit is contained in:
32
widgets/BaseWidget.php
Normal file
32
widgets/BaseWidget.php
Normal file
@ -0,0 +1,32 @@
|
||||
<?php
|
||||
|
||||
namespace itguild\forms\form\widgets;
|
||||
|
||||
use itguild\forms\form\core\cg_view\CgView;
|
||||
|
||||
abstract class BaseWidget
|
||||
{
|
||||
|
||||
protected CgView $cgView;
|
||||
|
||||
|
||||
public function __construct()
|
||||
{
|
||||
$this->cgView = new CgView();
|
||||
$this->cgView->viewPath = VIEW_PATH;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return self
|
||||
*/
|
||||
public static function create(): BaseWidget
|
||||
{
|
||||
return new static();
|
||||
}
|
||||
|
||||
/**
|
||||
* @param array $data
|
||||
* @return mixed
|
||||
*/
|
||||
abstract public function run(array $data = []);
|
||||
}
|
62
widgets/FormFieldBlockWidget.php
Normal file
62
widgets/FormFieldBlockWidget.php
Normal file
@ -0,0 +1,62 @@
|
||||
<?php
|
||||
/**
|
||||
* @var \itguild\forms\form\ActiveForm $form
|
||||
* @var \itguild\forms\app\DTO\FormDTO $dto
|
||||
* @var \itguild\forms\form\core\cg_view\CgView $cgView
|
||||
*/
|
||||
|
||||
namespace itguild\forms\form\widgets;
|
||||
|
||||
use Illuminate\Database\Eloquent\Collection;
|
||||
use itguild\forms\app\models\InputTypeModel;
|
||||
use itguild\forms\app\services\InputValueService;
|
||||
use itguild\forms\form\ActiveForm;
|
||||
|
||||
class FormFieldBlockWidget extends BaseWidget
|
||||
{
|
||||
|
||||
public function run(array $data = []): void
|
||||
{
|
||||
foreach ($this->prepare($data['fields']) as $field) {
|
||||
$this->cgView->render('/admin/field_type/' . $field['view_name'] . ".php", $field);
|
||||
}
|
||||
}
|
||||
|
||||
private function prepare(Collection $rawFields): array
|
||||
{
|
||||
$fields = [];
|
||||
|
||||
$i = 0;
|
||||
foreach ($rawFields as $field) {
|
||||
$params = json_decode($field['params'], true);
|
||||
$viewName = \itguild\forms\app\models\InputTypeModel::getViewNameByTypeId($field['input_type_id']);
|
||||
|
||||
if (!isset($fields[$field['name']])) {
|
||||
$fields[$field['name']] = [
|
||||
'name' => $field['name'],
|
||||
'form' => new ActiveForm(),
|
||||
'view_name' => $viewName,
|
||||
'count' => $i,
|
||||
];
|
||||
}
|
||||
|
||||
if ($field['input_type_id'] == InputTypeModel::RADIO_TYPE) {
|
||||
if (isset($fields[$field['name']]['value'])) {
|
||||
$fields[$field['name']]['value'] .= "\n" . $params['value'];
|
||||
} else {
|
||||
$fields[$field['name']]['value'] = $params['value'];
|
||||
}
|
||||
|
||||
} elseif ($field['input_type_id'] == InputTypeModel::SELECT_TYPE) {
|
||||
$fields[$field['name']]['value'] = implode("\n", InputValueService::getInputValuesById($field['id']));
|
||||
} else {
|
||||
$fields[$field['name']]['value'] = $params['value'] ?? null;
|
||||
$fields[$field['name']]['placeholder'] = $params['placeholder'] ?? null;
|
||||
}
|
||||
$i++;
|
||||
}
|
||||
|
||||
return $fields;
|
||||
}
|
||||
|
||||
}
|
Reference in New Issue
Block a user