如果用户在进行会议注册,并选择数量“1”作为注册类型一般,“1”作为注册类型加,然后单击“下一步”并进入注册表。
在表格中,用户需要为每个参与者介绍姓名和姓氏,这两个字段对于每个正在注册的参与者始终是必需的。然后,注册类型 general 有 3 个与之关联的自定义问题,因此对于注册类型 general,用户还需要回答这 3 个自定义问题。用户在注册表单中回答的问题和答案如下:
Question Answer
input text custom question text answer
long text custom question: long answer
checkbox custom question: check1answer
使用下面的注册表和上面的答案,显示中的参与者数组$request->all()如下所示。名称、姓氏、rtypes 已正确存储,但答案和 question_id 未正确存储在数组中:
"participant" => array:2 [▼
1 => array:15 [▼
"name" => "John"
"surname" => "W"
0 => array:1 [▼
"answer" => "text answer"
]
1 => array:1 [▼
"question_id" => "1"
]
2 => array:1 [▼
"answer" => "long answer"
]
3 => array:1 [▼
"question_id" => "2"
]
4 => array:1 [▼
"answer" => "check1answer"
]
5 => array:1 [▼
"question_id" => "3"
]
"rtypes" => "1"
]
2 => array:3 [▼
"name" => "Jake"
"surname" => "K"
"rtypes" => "4"
]
]
使用此 foreach 插入参与者的数据存储方式和数据库中的答案在 $participant['answer'] 中显示“未定义索引:答案”:
foreach ($participants_list as $participant) {
$name = $participant['name'];
$surname = $participant['surname'];
$participant_result = Participant::create([
'name' => $name,
'surname' => $surname,
'registration_type_id' => $participant['rtypes']
]);
Answer::create([
'participant_id' => $participant_result->id,
'answer' => $participant['answer'],
'question_id' => $participant['question_id']
]);
}
您知道构建参与者数组以解决问题吗?那么是否可以将每个参与者的答案和 question_id 正确存储在答案表中?
The $participant[0]['answer'] shows "text answer".
The $participant[1]['answer'] shows "undefined index answer".
The $participant[2]['answer'] shows "long answer".
The $participant[3]['answer'] shows "undefined index answer".
我是初学者,但也许像这样的结构允许使用 foreach 存储在答案表中。数组的每个索引都存储与每个参与者相关的所有信息(姓名、姓氏、参与者正在注册的注册类型,以及是否有与注册类型相关的自定义问题也需要存储答案:
"participant" => array:2 [▼
1 => array:15 [▼
"name" => "John"
"surname" => "W"
"answer" => [
0 => "text answer"
1 => "long answer"
2 => "check1"
]
"question_id" => [
0 => "1"
1 => "2"
2 => "3"
]
"rtypes" => "1"
]
2 => array:3 [▼
"name" => "Jake"
"surname" => "K"
"rtypes" => "4"
]
]
索引 2 中的参与者正在注册类型为“plus”的注册类型为 id 4,并且此注册类型没有任何关联的自定义问题。所以只需要收集姓名,姓氏和注册类型id。所以这对参与者 2 来说是可以的,因为没有自定义问题。
报名表格:
<form method="post" action="https://proj.test/conf/1/conf-test/registration/store">
<h6>Participant - 1 - general</h6>
<div class="form-group">
<label for="namegeneral_1">Name</label>
<input type="text" required id="namegeneral_1" name="participant[1][name]" class="form-control" value="">
</div>
<div class="form-group">
<label for="surnamegeneral_1">Surname</label>
<input type="text" required id="surnamegeneral_1" class="form-control" name="participant[1][surname]" value="">
</div>
<div class="form-group">
<label for="participant_question">input text custom question</label>
<input type='text' name='participant[1][][answer]' class='form-control' required>
<input type="hidden" name="participant_question_required[]" value="1">
<input type="hidden" value="1" name="participant[1][][question_id]"/>
</div>
<div class="form-group">
<label for="participant_question">long text custom question</label>
<textarea name='participant[1][][answer]' class='form-control' rows='3' required></textarea>
<input type="hidden" name="participant_question_required[]" value="1">
<input type="hidden" value="2" name="participant[1][][question_id]"/>
</div>
<div class="form-group">
<label for="participant_question">checkbox custom question</label>
<div class='checkbox-group required'>
<div class='form-check'>
<input type='checkbox' name='participant[1][][answer]' value='select1' class='form-check-input' >
<label class='form-check-label' for='exampleCheck1'>check1</label>
</div>
<div class='form-check'>
<input type='checkbox' name='participant[1][][answer]' value='select2' class='form-check-input' >
<label class='form-check-label' for='exampleCheck1'>check2</label>
</div>
</div>
<input type="hidden" name="participant_question_required[]" value="1">
<input type="hidden" value="3" name="participant[1][][question_id]"/>
</div>
<input type="hidden" name="participant[1][rtypes]" value="1"/>
<h6>Participant - 2 - plus</h6>
<div class="form-group">
<label for="nameplus_2">Name</label>
<input type="text" required id="nameplus_2" name="participant[2][name]" class="form-control" value="">
</div>
<div class="form-group font-size-sm">
<label for="surnameplus_2">Surname</label>
<input type="text" required id="surnameplus_2" class="form-control" name="participant[2][surname]" value="">
</div>
<input type="hidden" name="participant[2][rtypes]" value="4"/>
<input type="submit" class="btn btn-primary" value="Register"/>
</form>