bd 13.0
This commit is contained in:
parent
eb361ff002
commit
7c951565bd
@ -13,6 +13,7 @@ function getValueSelect(){
|
|||||||
let divElement = document.createElement("div");
|
let divElement = document.createElement("div");
|
||||||
divElement.innerHTML = responseText;
|
divElement.innerHTML = responseText;
|
||||||
targetElement.insertAdjacentElement("beforebegin", divElement);
|
targetElement.insertAdjacentElement("beforebegin", divElement);
|
||||||
|
let deleteButton = document.getElementById("deleteButton");
|
||||||
deleteButton.addEventListener("click", () => {
|
deleteButton.addEventListener("click", () => {
|
||||||
divElement.remove();
|
divElement.remove();
|
||||||
});
|
});
|
||||||
@ -20,6 +21,16 @@ function getValueSelect(){
|
|||||||
});
|
});
|
||||||
request.send()
|
request.send()
|
||||||
}
|
}
|
||||||
function getIdBlock(){
|
|
||||||
|
|
||||||
|
document.addEventListener("DOMContentLoaded", function() {
|
||||||
|
|
||||||
|
let divElement = document.getElementsByClassName("form-block");
|
||||||
|
let deleteButton = document.getElementsByClassName("deleteButton");
|
||||||
|
console.log(deleteButton);
|
||||||
|
for(let i = 0; i < deleteButton.length; i++){
|
||||||
|
deleteButton[i].addEventListener("click", () => {
|
||||||
|
deleteButton[i].parentElement.remove();
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
});
|
||||||
|
@ -2,7 +2,11 @@
|
|||||||
position: absolute;
|
position: absolute;
|
||||||
top: 5px;
|
top: 5px;
|
||||||
right: 5px;
|
right: 5px;
|
||||||
|
text-decoration: none;
|
||||||
|
width: 20px;
|
||||||
|
height: 20px;
|
||||||
|
text-align: center;
|
||||||
|
vertical-align: baseline;
|
||||||
}
|
}
|
||||||
.form-block {
|
.form-block {
|
||||||
background-color: #bbbbbb;
|
background-color: #bbbbbb;
|
||||||
|
@ -83,7 +83,7 @@ class AdminController extends BaseController
|
|||||||
$params = [
|
$params = [
|
||||||
"name" => $name,
|
"name" => $name,
|
||||||
"class" => "form-control",
|
"class" => "form-control",
|
||||||
'placeholder' => $input['placeholder']
|
'placeholder' => $input['placeholder'] ?? null
|
||||||
];
|
];
|
||||||
|
|
||||||
if ($input['type'] == InputTypeModel::RADIO_TYPE) {
|
if ($input['type'] == InputTypeModel::RADIO_TYPE) {
|
||||||
@ -108,6 +108,17 @@ class AdminController extends BaseController
|
|||||||
|
|
||||||
} elseif ($input['type'] == InputTypeModel::SELECT_TYPE) {
|
} elseif ($input['type'] == InputTypeModel::SELECT_TYPE) {
|
||||||
$options = explode("\n", $input['options']);
|
$options = explode("\n", $input['options']);
|
||||||
|
$paramsRadio = [
|
||||||
|
"name" => $name,
|
||||||
|
'label' => ['title' => $input["name"], 'for' => $name, "class" => 'form-label']
|
||||||
|
];
|
||||||
|
$formInput = FormInputModel::Create([
|
||||||
|
'form_id' => $form->id,
|
||||||
|
'input_type_id' => $input['type'],
|
||||||
|
'label' => $input["name"],
|
||||||
|
'name' => $name,
|
||||||
|
'params' => json_encode($paramsRadio)
|
||||||
|
]);
|
||||||
foreach ($options as $option) {
|
foreach ($options as $option) {
|
||||||
InputValueModel::Create(['form_input_id' => $formInput->id, 'value' => $option]);
|
InputValueModel::Create(['form_input_id' => $formInput->id, 'value' => $option]);
|
||||||
}
|
}
|
||||||
|
14
src/app/services/InputValueService.php
Normal file
14
src/app/services/InputValueService.php
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace itguild\forms\app\services;
|
||||||
|
|
||||||
|
class InputValueService
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @return mixed
|
||||||
|
*/
|
||||||
|
public static function getInputValuesById(int $inputId): array
|
||||||
|
{
|
||||||
|
return \itguild\forms\app\models\InputValueModel::where("form_input_id", $inputId)->pluck('value', 'id')->toArray();
|
||||||
|
}
|
||||||
|
}
|
32
src/widgets/BaseWidget.php
Normal file
32
src/widgets/BaseWidget.php
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace itguild\forms\widgets;
|
||||||
|
|
||||||
|
use itguild\forms\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 = []);
|
||||||
|
}
|
63
src/widgets/FormFieldBlockWidget.php
Normal file
63
src/widgets/FormFieldBlockWidget.php
Normal file
@ -0,0 +1,63 @@
|
|||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* @var \itguild\forms\ActiveForm $form
|
||||||
|
* @var \itguild\forms\app\DTO\FormDTO $dto
|
||||||
|
* @var \itguild\forms\core\cg_view\CgView $cgView
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace itguild\forms\widgets;
|
||||||
|
|
||||||
|
use Illuminate\Database\Eloquent\Collection;
|
||||||
|
use itguild\forms\app\models\InputTypeModel;
|
||||||
|
use itguild\forms\ActiveForm;
|
||||||
|
use itguild\forms\app\services\InputValueService;
|
||||||
|
use itguild\forms\debug\Debug;
|
||||||
|
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1 @@
|
|||||||
|
<a href="#" class="delete-button btn-danger deleteButton">X</a>
|
@ -5,7 +5,8 @@
|
|||||||
*
|
*
|
||||||
* @var \itguild\forms\ActiveForm $form
|
* @var \itguild\forms\ActiveForm $form
|
||||||
* @var integer $count
|
* @var integer $count
|
||||||
*
|
* @var integer $name
|
||||||
|
* @var \itguild\forms\core\cg_view\CgView $cgView
|
||||||
*/
|
*/
|
||||||
|
|
||||||
use itguild\forms\inputs\Checkbox;
|
use itguild\forms\inputs\Checkbox;
|
||||||
@ -13,10 +14,11 @@ use itguild\forms\inputs\TextInput;
|
|||||||
|
|
||||||
|
|
||||||
$form->field(TextInput::class, name: "InputForm[$count][name]", params: ['class' => "form-control",
|
$form->field(TextInput::class, name: "InputForm[$count][name]", params: ['class' => "form-control",
|
||||||
'placeholder' => "Наименование поля"])->setLabel("Наименование поля (например \"Телефон\")")->render();
|
'placeholder' => "Наименование поля", 'value' => $name ?? null])->setLabel("Наименование поля (например \"Телефон\")")->render();
|
||||||
$form->field(Checkbox::class, name: "InputForm[$count][required]", params:['value' => '1'])->setLabel("Обязательное")->render();
|
$form->field(Checkbox::class, name: "InputForm[$count][required]", params:['value' => '1'])->setLabel("Обязательное")->render();
|
||||||
$form->field(\itguild\forms\inputs\Hidden::class, name: "InputForm[$count][type]", params: ['value' => '5'])->render();
|
$form->field(\itguild\forms\inputs\Hidden::class, name: "InputForm[$count][type]", params: ['value' => '5'])->render();
|
||||||
|
|
||||||
|
$cgView->render("/admin/additional_elements/_delete_field_box_button.php", []);
|
||||||
?>
|
?>
|
||||||
<button class="delete-button btn-danger">X</button>
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
@ -5,16 +5,18 @@
|
|||||||
*
|
*
|
||||||
* @var \itguild\forms\ActiveForm $form
|
* @var \itguild\forms\ActiveForm $form
|
||||||
* @var integer $count
|
* @var integer $count
|
||||||
*
|
* @var integer $name
|
||||||
|
* @var \itguild\forms\core\cg_view\CgView $cgView
|
||||||
*/
|
*/
|
||||||
|
|
||||||
use itguild\forms\inputs\Checkbox;
|
use itguild\forms\inputs\Checkbox;
|
||||||
use itguild\forms\inputs\TextInput;
|
use itguild\forms\inputs\TextInput;
|
||||||
|
|
||||||
$form->field(TextInput::class, name: "InputForm[$count][name]", params: ['class' => "form-control",
|
$form->field(TextInput::class, name: "InputForm[$count][name]", params: ['class' => "form-control",
|
||||||
'placeholder' => "Наименование"])->setLabel("Наименование (например \"Телефон\")")->render();
|
'placeholder' => "Наименование", 'value' => $name ?? null])->setLabel("Наименование (например \"Телефон\")")->render();
|
||||||
$form->field(Checkbox::class, name: "InputForm[$count][required]", params:['value' => '1'])->setLabel("Обязательное")->render();
|
$form->field(Checkbox::class, name: "InputForm[$count][required]", params:['value' => '1'])->setLabel("Обязательное")->render();
|
||||||
$form->field(\itguild\forms\inputs\Hidden::class, name: "InputForm[$count][type]", params: ['value' => '1'])->render();
|
$form->field(\itguild\forms\inputs\Hidden::class, name: "InputForm[$count][type]", params: ['value' => '1'])->render();
|
||||||
|
|
||||||
|
$cgView->render("/admin/additional_elements/_delete_field_box_button.php", []);
|
||||||
?>
|
?>
|
||||||
<button class="delete-button btn-danger">X</button>
|
|
||||||
</div>
|
</div>
|
||||||
|
@ -5,19 +5,22 @@
|
|||||||
*
|
*
|
||||||
* @var \itguild\forms\ActiveForm $form
|
* @var \itguild\forms\ActiveForm $form
|
||||||
* @var integer $count
|
* @var integer $count
|
||||||
*
|
* @var integer $name
|
||||||
|
* @var string $value
|
||||||
|
* @var \itguild\forms\core\cg_view\CgView $cgView
|
||||||
*/
|
*/
|
||||||
|
|
||||||
use itguild\forms\inputs\Checkbox;
|
use itguild\forms\inputs\Checkbox;
|
||||||
use itguild\forms\inputs\TextInput;
|
use itguild\forms\inputs\TextInput;
|
||||||
|
|
||||||
$form->field(TextInput::class, name: "InputForm[$count][name]", params: ['class' => "form-control",
|
$form->field(TextInput::class, name: "InputForm[$count][name]", params: ['class' => "form-control",
|
||||||
'placeholder' => "Наименование"])->setLabel("Наименование (например \"Телефон\")")->render();
|
'placeholder' => "Наименование", 'value' => $name ?? null])->setLabel("Наименование (например \"Телефон\")")->render();
|
||||||
$form->field(\itguild\forms\inputs\TextArea::class, name: "InputForm[$count][radio]", params: ['class' => "form-control"])
|
$form->field(\itguild\forms\inputs\TextArea::class, name: "InputForm[$count][radio]", params: ['class' => "form-control", 'value' => $value])
|
||||||
->setLabel("Введите радио кнопки, каждую на новой строке")
|
->setLabel("Введите радио кнопки, каждую на новой строке")
|
||||||
->render();
|
->render();
|
||||||
$form->field(Checkbox::class, name: "InputForm[$count][required]", params:['value' => '1'])->setLabel("Обязательное")->render();
|
$form->field(Checkbox::class, name: "InputForm[$count][required]", params:['value' => '1'])->setLabel("Обязательное")->render();
|
||||||
$form->field(\itguild\forms\inputs\Hidden::class, name: "InputForm[$count][type]", params: ['value' => '4'])->render();
|
$form->field(\itguild\forms\inputs\Hidden::class, name: "InputForm[$count][type]", params: ['value' => '4'])->render();
|
||||||
|
|
||||||
|
$cgView->render("/admin/additional_elements/_delete_field_box_button.php", []);
|
||||||
?>
|
?>
|
||||||
<button class="delete-button btn-danger">X</button>
|
|
||||||
</div>
|
</div>
|
@ -1,25 +1,34 @@
|
|||||||
<div class="form-block form-control">
|
|
||||||
<b><p>Список</p></b>
|
|
||||||
<?php
|
<?php
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* @var \itguild\forms\ActiveForm $form
|
* @var \itguild\forms\ActiveForm $form
|
||||||
* @var integer $count
|
* @var integer $count
|
||||||
*
|
* @var integer $name
|
||||||
|
* @var string $value
|
||||||
|
* @var \itguild\forms\core\cg_view\CgView $cgView
|
||||||
*/
|
*/
|
||||||
|
|
||||||
use itguild\forms\inputs\Checkbox;
|
use itguild\forms\inputs\Checkbox;
|
||||||
use itguild\forms\inputs\TextArea;
|
use itguild\forms\inputs\TextArea;
|
||||||
use itguild\forms\inputs\TextInput;
|
use itguild\forms\inputs\TextInput;
|
||||||
|
|
||||||
|
?>
|
||||||
|
<div class="form-block form-control">
|
||||||
|
<b><p>Список</p></b>
|
||||||
|
|
||||||
|
<?php
|
||||||
|
|
||||||
$form->field(TextInput::class, name: "InputForm[$count][name]", params: ['class' => "form-control",
|
$form->field(TextInput::class, name: "InputForm[$count][name]", params: ['class' => "form-control",
|
||||||
'placeholder' => "Наименование"])->setLabel("Наименование (например \"Список городов\")")->render();
|
'placeholder' => "Наименование", 'value' => $name ?? null])->setLabel("Наименование (например \"Список городов\")")->render();
|
||||||
$form->field(TextArea::class, name: "InputForm[$count][options]", params: ['class' => "form-control"])
|
$form->field(TextArea::class, name: "InputForm[$count][options]", params: [
|
||||||
|
'class' => "form-control",
|
||||||
|
'value' => $value,
|
||||||
|
])
|
||||||
->setLabel("Опции выпадающего списка, каждый с новой строки")
|
->setLabel("Опции выпадающего списка, каждый с новой строки")
|
||||||
->render();
|
->render();
|
||||||
$form->field(Checkbox::class, name: "InputForm[$count][required]", params: ['value' => '1'])->setLabel("Обязательное")->render();
|
$form->field(Checkbox::class, name: "InputForm[$count][required]", params: ['value' => '1'])->setLabel("Обязательное")->render();
|
||||||
$form->field(\itguild\forms\inputs\Hidden::class, name: "InputForm[$count][type]", params: ['value' => '6'])->render();
|
$form->field(\itguild\forms\inputs\Hidden::class, name: "InputForm[$count][type]", params: ['value' => '6'])->render();
|
||||||
|
|
||||||
|
$cgView->render("/admin/additional_elements/_delete_field_box_button.php", []);
|
||||||
?>
|
?>
|
||||||
<button class="delete-button btn-danger">X</button>
|
|
||||||
</div>
|
</div>
|
@ -5,6 +5,9 @@
|
|||||||
*
|
*
|
||||||
* @var \itguild\forms\ActiveForm $form
|
* @var \itguild\forms\ActiveForm $form
|
||||||
* @var integer $count
|
* @var integer $count
|
||||||
|
* @var integer $name
|
||||||
|
* @var integer $placeholder
|
||||||
|
* @var \itguild\forms\core\cg_view\CgView $cgView
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@ -12,11 +15,12 @@ use itguild\forms\inputs\Checkbox;
|
|||||||
use itguild\forms\inputs\TextInput;
|
use itguild\forms\inputs\TextInput;
|
||||||
|
|
||||||
$form->field(TextInput::class, name: "InputForm[$count][name]", params: ['class' => "form-control",
|
$form->field(TextInput::class, name: "InputForm[$count][name]", params: ['class' => "form-control",
|
||||||
'placeholder' => "Наименование поля"])->setLabel("Наименование поля (например \"Телефон\")")->render();
|
'placeholder' => "Наименование поля", 'value' => $name ?? null])->setLabel("Наименование поля (например \"Телефон\")")->render();
|
||||||
$form->field(TextInput::class, name: "InputForm[$count][placeholder]", params: ['class' => "form-control",
|
$form->field(TextInput::class, name: "InputForm[$count][placeholder]", params: ['class' => "form-control",
|
||||||
'placeholder' => 'Placeholder'])->setLabel("Placeholder")->render();
|
'placeholder' => 'Placeholder', "value" => $placeholder ?? null])->setLabel("Placeholder")->render();
|
||||||
$form->field(Checkbox::class, name: "InputForm[$count][required]", params:['value' => '1'])->setLabel("Обязательное")->render();
|
$form->field(Checkbox::class, name: "InputForm[$count][required]", params:['value' => '1'])->setLabel("Обязательное")->render();
|
||||||
$form->field(\itguild\forms\inputs\Hidden::class, name: "InputForm[$count][type]", params: ['value' => '2'])->render();
|
$form->field(\itguild\forms\inputs\Hidden::class, name: "InputForm[$count][type]", params: ['value' => '2'])->render();
|
||||||
|
|
||||||
|
$cgView->render("/admin/additional_elements/_delete_field_box_button.php", []);
|
||||||
?>
|
?>
|
||||||
<button class="delete-button btn-danger">X</button>
|
|
||||||
</div>
|
</div>
|
@ -5,17 +5,21 @@
|
|||||||
*
|
*
|
||||||
* @var \itguild\forms\ActiveForm $form
|
* @var \itguild\forms\ActiveForm $form
|
||||||
* @var integer $count
|
* @var integer $count
|
||||||
*
|
* @var integer $name
|
||||||
|
* @var integer $placeholder
|
||||||
|
* @var \itguild\forms\core\cg_view\CgView $cgView
|
||||||
*/
|
*/
|
||||||
use itguild\forms\inputs\Checkbox;
|
use itguild\forms\inputs\Checkbox;
|
||||||
use itguild\forms\inputs\TextInput;
|
use itguild\forms\inputs\TextInput;
|
||||||
|
|
||||||
|
|
||||||
$form->field(TextInput::class, name: "InputForm[$count][name]", params: ['class' => "form-control",
|
$form->field(TextInput::class, name: "InputForm[$count][name]", params: ['class' => "form-control",
|
||||||
'placeholder' => "Наименование поля"])->setLabel("Наименование поля (например \"Телефон\")")->render();
|
'placeholder' => "Наименование поля", 'value' => $name ?? null])->setLabel("Наименование поля (например \"Телефон\")")->render();
|
||||||
$form->field(TextInput::class, name: "InputForm[$count][placeholder]", params: ['class' => "form-control",
|
$form->field(TextInput::class, name: "InputForm[$count][placeholder]", params: ['class' => "form-control",
|
||||||
'placeholder' => 'Placeholder'])->setLabel("Placeholder")->render();
|
'placeholder' => 'Placeholder', "value" => $placeholder ?? null])->setLabel("Placeholder")->render();
|
||||||
$form->field(Checkbox::class, name: "InputForm[$count][required]", params:['value' => '1'])->setLabel("Обязательное")->render();
|
$form->field(Checkbox::class, name: "InputForm[$count][required]", params:['value' => '1'])->setLabel("Обязательное")->render();
|
||||||
$form->field(\itguild\forms\inputs\Hidden::class, name: "InputForm[$count][type]", params: ['value' => '3'])->render();
|
$form->field(\itguild\forms\inputs\Hidden::class, name: "InputForm[$count][type]", params: ['value' => '3'])->render();
|
||||||
|
|
||||||
|
$cgView->render("/admin/additional_elements/_delete_field_box_button.php", []);
|
||||||
?>
|
?>
|
||||||
<button class="delete-button btn-danger">X</button>
|
|
||||||
</div>
|
</div>
|
@ -6,6 +6,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
use itguild\forms\ActiveForm;
|
use itguild\forms\ActiveForm;
|
||||||
|
use itguild\forms\app\models\InputTypeModel;
|
||||||
use itguild\forms\inputs\TextInput;
|
use itguild\forms\inputs\TextInput;
|
||||||
use itguild\forms\inputs\TextArea;
|
use itguild\forms\inputs\TextArea;
|
||||||
use itguild\forms\app\controllers\AdminController;
|
use itguild\forms\app\controllers\AdminController;
|
||||||
@ -67,12 +68,7 @@ $form->field(\itguild\forms\inputs\Hidden::class, name: "formId", params: [
|
|||||||
])->render();
|
])->render();
|
||||||
|
|
||||||
if (isset($fields)){
|
if (isset($fields)){
|
||||||
$i = 0;
|
\itguild\forms\widgets\FormFieldBlockWidget::create()->run(['fields' => $fields]);
|
||||||
foreach ($fields as $field){
|
|
||||||
$viewName = \itguild\forms\app\models\InputTypeModel::getViewNameByTypeId($field['input_type_id']);
|
|
||||||
$cgView->render("/admin/field_type/$viewName.php", ['form' => new ActiveForm(), 'count' => $i]);
|
|
||||||
$i++;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
$form->field(\itguild\forms\inputs\Button::class, name: "", params: [
|
$form->field(\itguild\forms\inputs\Button::class, name: "", params: [
|
||||||
|
3
views/widgets/form_field_block/index.php
Normal file
3
views/widgets/form_field_block/index.php
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
echo 123;
|
Loading…
Reference in New Issue
Block a user