填写表单时,利用 old () 记住之前填写的选择框数据以及时间栏数据

之前学习了本站的 Laravel Web 开发实战入门教程,在填写注册表单的时候使用了value = "{{ old('value') }}"来保留表单提交失败时之前填过的数据。

然而这个简单直接的方法只适用于文本类型的数据,对于单选框、复选框或者时间框中的数据就无能为力了。
在参考了这个提问的答案: 如何在复选框配合 old () 来保持原来选中的 之后,我在使用 {{ old('value') }} 这个方法时添加了判定条件,在自己的项目中完成了对多种类型数据输入框的数据保留。

以这个请假信息新增表为例:

填写表单时,利用old()记住之前填写的复选框数据以及时间栏数据

以下是一些实例:

  • 使单选框记住选项:
    <select name="staff_id" id="name_select">
    <option value=""> -----请选择----- </option>
    @foreach($staffs as $staff)
        <option value="{{ $staff->id }} " @if(old('staff_id') == $staff->id) selected @endif> {{ $staff->staffname }} </option>
    @endforeach
    </select>

    对单选下拉框赋值时,判断上一次选择的值是否等于这个选项的值,如果是,那么选中。
    效果图:

填写表单时,利用old()记住之前填写的复选框数据以及时间栏数据

  • 使时间框记住所填时间:
    <input type="datetime-local" name="absence_start_time"
    @if (old('absence_start_time')!=null) value="{{ date('Y-m-d',strtotime(old('absence_start_time'))).'T'.date('H:i',strtotime(old('absence_start_time'))) }}"
    @endif
    />

    由于在 HTML 中,"datetime" 的格式为2019-06-04T14:19,我们必须用字符串拼接的方式将 PHP 的时间格式转化为 HTML 的格式。另外,我使用判断条件 @if (old('absence_start_time')!=null) ,是因为如果不加这个判断,表单将被赋予初始值 1970-01-01T00:00,这会对表单填写增加不便。
    效果图:

填写表单时,利用old()记住之前填写的选择框数据以及时间栏数据

处理这些特殊的数据类型,我们需要活学活用,举一反三。这几天一边学习 Laravel 框架一边做项目,收获很大。

本作品采用《CC 协议》,转载必须注明作者和本文链接
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!