我正在尝试使用foreach语句遍历数组。我从API,而不是我的数组。我在刀片中使用了Laravel中的foreach。 如果以某种方式在我的刀片中通过数组,每个数组都有一个类型,它只能看到“ radio”类型。没有复选框或文本区域。不知道为什么以及我该怎么做才能解决它。
<form action="/sendForm" method="post">@csrf
@foreach($survey['data']['formCategories'] as $category)
<h3 id="{{$category['name']}}">{{$category['name']}}</h3> <!-- Enquete -->
<hr/>
@foreach($category['formQuestions'] as $question)
@if($question['type'] === 'header' || $question['type'] === 'text' || $question['type'] === 'date')
<!-- Don't show -->
@else
<div>
<p class="questions">{{$question['name']}}</p>
<fieldset id="{{$question['id']}}" class="form-group">
@foreach($question['formOptions'] as $answer)
@if($question['type'] === "textarea" || $question['type'] === "paragraph")
TextArea
@elseif($question['type'] === "checkbox")
Checkbox
@elseif($question['type'] === "radio")
Radio
@endif
@endforeach
</fieldset>
</div>
@endif
@endforeach
@endforeach
<input type="submit" value="Sent" class="submit-btn" id="versturen">
</form>
最后,我想根据类型显示表单输入。因此,如果类型是textarea,则显示一个textarea,如果是复选框,请选中一个复选框,与radio相同。
对于任何不好的语法,我感到抱歉,我知道这不是最好的问题,但是我不知道该怎么问。
编辑
Api响应
name: '',
formCategories: [ //Different Categories
0: name:''
formQuestions: [ //Questions
0: name: '',
type: '', //Is either Radio, Checkbox or TextArea
formOptions: [ //Possible answers if necessary, empty if not needed.
0: name: ''
]
],
],
编辑2
dd,类型为textarea:
array:7 [
name: '',
formQuestions: [
name: '',
type: 'textarea',
]
]
答案 0 :(得分:0)
您在循环中调用了错误的对象,应该调用$ answer,因此进行更改
@foreach($question['formOptions'] as $answer)
@if($question['type'] === "textarea" || $question['type'] === "paragraph")
TextArea
@elseif($question['type'] === "checkbox")
Checkbox
@elseif($question['type'] === "radio")
Radio
@endif
@endforeach
到
@foreach($question['formOptions'] as $answer)
@if($answer['type'] === "textarea" || $answer['type'] === "paragraph"
TextArea
@elseif($answer['type'] === "checkbox")
Checkbox
@elseif($answer['type'] === "radio")
Radio
@endif
@endforeach
因为这样做,您只在$ question处将循环的第一个实例作为数组调用。但是$ answer是foreach循环数组中的特定对象。
答案 1 :(得分:0)
您可以更改代码
来自
@if($question['type'] === "textarea" || $question['type'] === "paragraph")
进入
@if($question['type'] == "textarea" || $question['type'] == "paragraph")
并检查...
如果您使用'===',它将检查值和类型。
答案 2 :(得分:0)
错误是在类型为textarea或复选框的问题中,formOptions为空。该foreach应该在单选if语句中。 感谢所有试图帮助我的人。