Blade模板中如何用old()获取数组g3最后一个元素及控制div显示
Laravel Blade 模板问题解决方案
问题1:获取数组g3的最后一个元素(未知元素数量时)
由于old('g3')返回的是对应多选框选中项的数组,直接用Laravel内置的last()辅助函数即可获取最后一个元素,同时给old()传入默认空数组,避免数组为空时触发错误:
{{ last(old('g3', [])) }}
如果需要先判断数组非空再取值,可添加条件判断:
@if(!empty(old('g3', []))) {{ last(old('g3')) }} @endif
问题2:根据多选select选中项控制div显示状态
原代码存在两个问题:一是多选框的选中判断逻辑错误(直接将数组与字符串比较),二是div显示逻辑的判断方式错误。以下是修正后的完整代码:
修正多选框选中状态判断
<select name="g3[]" multiple="multiple"> <option value="1" @if(in_array('1', old('g3', []))) selected @endif>lifting</option> <option value="2" @if(in_array('2', old('g3', []))) selected @endif>jogging</option> <option value="3" @if(in_array('3', old('g3', []))) selected @endif>sleeping</option> </select>
通过in_array()判断当前option的值是否存在于old('g3')返回的数组中,以此确定选项是否选中。
修正div显示状态控制
当选中值为3的选项时隐藏div,否则显示:
<div @if(in_array('3', old('g3', []))) style="display: none" @endif> Not to be seen</div>
也可以用三元表达式的写法:
<div {!! in_array('3', old('g3', [])) ? 'style="display: none"' : '' !!}> Not to be seen</div>
内容的提问来源于stack exchange,提问作者Gabriel Rogath
相关产品推荐
相关产品推荐

