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()-&gt;input('field_name') 还有,$field_name 包含什么? @ClémentBaconnier 是的,之后没有问题,我的主要问题是加载时,(old($field_name)) returns null/empty,但如果你这样做old($field_name) == $key,它returns 0!?! 因为null == 0 = truenull === 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 并设置默认值的复选框

id objc_msgSend(id self, SEL op, ...)

laravel在路由中设置中间件

在 LARAVEL 更新表单中使用变量