Laravel old($field) 在 select2/select 返回错误值
Posted
技术标签:
【中文标题】Laravel old($field) 在 select2/select 返回错误值【英文标题】:Laravel old($field) in select2/select returning wrong value 【发布时间】:2021-01-01 05:23:11 【问题描述】:下面的代码总是返回第一个被选中的值,而不是空的!
<select class="select2" autocomplete="off" name="$field_name">
<option></option>
@foreach(explode(',', "a,b,c") as $key=> $value)
<option value='$key' @if (old($field_name) == $key) selected="selected" @endif>$value</option>
@endforeach
</select>
不知何故,old($field_name) == $key returns 0
使得 select 语句总是将第一个选项作为选定的选项,而不是例如占位符。
即使old($field_name) on its own returning ""
知道如何解决这个问题吗?
【问题讨论】:
用,
分割,不需要正则表达式,使用explode(',', 'a,b,c,d')
@WiktorStribiżew 哦,感谢您提供的简洁替代方案,我相应地修改了我的代码。
提交表单后,您的“field_name”是否作为请求中的实际值? request()->input('field_name')
还有,$field_name
包含什么?
@ClémentBaconnier 是的,之后没有问题,我的主要问题是加载时,(old($field_name)) returns null/empty
,但如果你这样做old($field_name) == $key
,它returns 0
!?!
因为null == 0
= true 但null === 0
= false
【参考方案1】:
基于'' == 0 = true
和'' === 0 = false
的结论
<select class="select2" autocomplete="off" name="$field_name">
<option></option>
@foreach(explode(',', "a,b,c") as $key=> $value)
<option value='$key' @if(!is_null(old($field_name)) && old($field_name) == $key) selected='selected' @endif>$value</option>
@endforeach
</select>
将解决问题
【讨论】:
以上是关于Laravel old($field) 在 select2/select 返回错误值的主要内容,如果未能解决你的问题,请参考以下文章
Laravel 5.1 如何在刀片文件上使用 old('') 助手进行无线电输入
Laravel 4 如何使用 input::old() 方法在下拉菜单中显示选定的值?
Laravel 无法取消选中使用 old 并设置默认值的复选框