You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel下拉框旧输入值多语言适配问题求助

解决Laravel下拉框多语言环境下旧输入值保留问题

我明白你碰到的问题了——核心根源是你搞混了表单提交的value值和页面显示的翻译文本的区别。

当用户选择s/w这类带翻译的选项时,表单实际提交的是value="s/w",所以old('color')存储的是s/w,而不是翻译后的b/w(英文环境下)。但你现在的判断条件是把old('color')和@lang('s/w')(也就是翻译后的文本)做对比,这两者肯定不相等,自然就无法保留选中状态了。

正确的解决方案

你只需要让判断条件和option的value属性值保持一致就行,翻译只用于显示选项文本,不要掺和到旧值判断里。

修正后的下拉框代码如下:

<select name="color" class="form-control form-control-sm">
    <option value="4c" {{ old('color') == "4c" ? "selected" : "" }}>4c</option>
    <option value="s/w" {{ old('color') == "s/w" ? "selected" : "" }}>@lang('s/w')</option>
    <option value="3c" {{ old('color') == "3c" ? "selected" : "" }}>3c</option>
    <option value="s/w + rot" {{ old('color') == "s/w + rot" ? "selected" : "" }}>@lang('s/w + rot')</option>
    <option value="s/w + gelb" {{ old('color') == "s/w + gelb" ? "selected" : "" }}>@lang('s/w + gelb')</option>
    <option value="s/w + blau" {{ old('color') == "s/w + blau" ? "selected" : "" }}>@lang('s/w + blau')</option>
</select>

补充说明

  • old('color')保存的是用户提交的value属性内容,和页面显示的翻译文本完全无关
  • 翻译函数@lang()只负责把选项文本转换成对应语言,不会影响表单提交的实际值
  • 所有选项的判断逻辑统一用value值和old()对比,不管是否需要翻译,这样就能确保多语言环境下旧输入值的选中状态正常保留了

内容的提问来源于stack exchange,提问作者ofmiceandmoon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 06:29:54