我将视图传递给我。如果我将其输出为数组,我会得到类似的结果
array:2 [▼
0 => array:8 [▼
"id" => "53"
"name" => "creativeOption"
"label" => "checkboxSelection"
"value" => "Animated GIF"
"campaignCreativesId" => "21"
"deleted_at" => null
"created_at" => "2016-03-01 13:52:36"
"updated_at" => "2016-03-01 13:52:36"
]
1 => array:8 [▼
"id" => "54"
"name" => "creativeOption"
"label" => "Other"
"value" => "12345"
"campaignCreativesId" => "21"
"deleted_at" => null
"created_at" => "2016-03-01 13:52:36"
"updated_at" => "2016-03-01 13:52:36"
]
]
基本上,我有几个复选框选项。如果选中“其他”复选框,则会显示文本区域以获取更多详细信息。在我看来,我做了以下
@foreach($campaign->campaignCreatives->campaignCreativesData as $data)
@if($data->label == 'Other')
{{dd($data->value)}}
<div class="col-md-12 noPadding" id="cOtherText">
{!! Form::textarea('otherInput', $data->value, array('placeholder' => 'Please provide some additional information')) !!}
</div>
@else
<div class="col-md-12 noPadding" id="cOtherText">
{!! Form::textarea('otherInput', null, array('placeholder' => 'TEST')) !!}
</div>
@endif
@endforeach
我基本上做的是检查此集合中是否有名为Other的标签。如果有,我想用旧输入显示文本区域。如果没有名为Other的标签,我只需要显示一个空白的textarea。
现在有了上述内容,您可以看到我在if语句中放置了一个dd。这就是我发现的奇怪。使用上面的数组/集合,应该使用if,因为有一个名为Other present的标签。正如我所料,dd被解雇了。 dd输出&#34; 12345&#34;这是以前添加到此textarea的数据。所以如果我删除这个dd,我希望textarea在其中显示12345。
但是,我似乎在else语句中显示了textarea。原因我知道正在显示这个textarea是因为我将占位符设置为TEST,这是我在textarea中看到的。
所以即使if语句满足,为什么它会显示第二个textarea?
答案 0 :(得分:2)
如果我明白你需要什么,我会尝试这样做:
@if ($campaign->campaignCreatives->campaignCreativesData->contains('label', 'Other'))
<div class="col-md-12 noPadding" id="cOtherText">
{!! Form::textarea('otherInput',
$campaign->campaignCreatives->campaignCreativesData->where('label', 'Other')->first()->value,
array('placeholder' => 'Please provide some additional information')) !!}
</div>
;
@else
<div class="col-md-12 noPadding" id="cOtherText">
{!! Form::textarea('otherInput', null, array('placeholder' => 'TEST')) !!}
</div>
@endif
我还没有测试过,所以,告诉我它是否有效。