Как отобразить входные данные из формы внешнего интерфейса в управлении ретранслятором на сервере в октябре CMS
В компонентах,
default.htm
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){
var maxField = 3; //Input fields increment limitation
var addButton = $('#add'); //Add button selector
var wrapper = $('#main'); //Input field wrapper
var i=1;
var fieldHTML = '<div id="p_'+i+'" >' +
'Name:<input type="text" name="name'+i+'" id="name'+i+'">' +
' <a href="" id="p_'+i+'" class="remove_button">remove</a>' +
'</div>'; //New input field html
var x = 1; //Initial field counter is 1
//Once add button is clicked
$(addButton).click(function(){
//Check maximum number of input fields
// alert("k");
if(x < maxField){
x++; //Increment field counter
$(wrapper).append(fieldHTML); //Add field html
}
i++;
});
//Once remove button is clicked
$(wrapper).on('click', '.remove_button', function(e){
var proj_button_id = $(this).attr("id");
//alert(edu_button_id);
e.preventDefault();
$("#"+ proj_button_id +"").remove();
// $(this).parent('div').remove(); //Remove field html
x--; //Decrement field counter
});
});
</script>
<form
method="post"
name="form" id="form" accept-charset="UTF8"
enctype="multipart/form-data" data-request="onEnter" data-request-files>
<input type="hidden" name="_handler" value="onEnter">
{{ form_token() }}
{{ form_sessionKey() }}
<div id="main">
Name:<input type="text" name="name0" id="name0">
<a href="javascript:void(0);" id="add">Add Another</a>
<input type="submit" name="createAccount" value="Submit">
</div>
</form>
componentname.php
class RepeaterName extends ComponentBase
{
public function componentDetails()
{
return [
'name' => 'ReapeterName',
'description' => 'Name.'
];
}
public function onEnter()
{
$input = post();
log::info($input);
$contact = new RepeaterModel();
$instArr = [];
$instArr['innername'] = [];
for($i=0; $i<=5; $i++)
{
if(isset( $input['name'.$i])) {
$instArr['innername'][] = $input['name'.$i];
}
}
Log::info(json_encode($instArr));
$contact->name =json_encode($instArr);
//$contact->name=Input::post('name');
$contact->save();
Log::info($contact);
}
}
?>
modelname.php
protected $jsonable = ['name'];
я хочу показать, что входные данные поступают из внешнего интерфейса, который является множественным именем, которое должно быть сохранено в формате json, потому что я хочу показать этот ввод в элементе управления repaeter, имя которого равно "name", и в нем есть текстовый элемент управления с именем "innername", поэтому есть любое решение для отображения входных данных в форме бэкэнда
1 ответ
Да, я решил, что на самом деле это была моя ошибка, я использую json_encode в componentName.php, что неправильно, потому что мы уже используем $jsonable в модели, поэтому передача json_encode () напрямую передает массив, где хранятся данные
componentName.php
public function onEnter()
{
$input = post();
// log::info($input);
$contact = new RepeaterModel();
$instArr = [];
for($i=0; $i<3; $i++)
{
$obj = [];
if(isset( $input['name'.$i])) {
$obj['innername'] = $input['name'.$i];
}
if(isset( $input['addr'.$i])) {
$obj['inneraddr'] = $input['addr'.$i];
}
if(!empty($obj))
$instArr[] = $obj;
}
$contact->fname=$instArr;
$contact->age=$input['age'];
$contact->save();
Log::info($contact);
}
}