Laravel:除了'radio'之外看不到变量值

时间:2019-10-16 09:50:17

标签: php laravel if-statement foreach laravel-blade

我正在尝试使用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',
    ]
]

3 个答案:

答案 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语句中。 感谢所有试图帮助我的人。