代码之家  ›  专栏  ›  技术社区  ›  fightstarr20

Laravel 5-使用“old”预填充表单

  •  0
  • fightstarr20  · 技术社区  · 6 年前

    我有一个表单输入,用于编辑像这样的Laravel 5应用程序中的现有条目。。

    <input name="obj_email" type="text" value="{{$myobject->obj_email}}">
    

    这是正确的,当表单加载时,它会预先填充值,但是如果某个表单验证失败,当页面重新加载时,它会丢失我输入的电子邮件。

    <input name="obj_email" type="text" value="{{old('obj_email')}}">
    

    这是可行的,当验证失败时它不会丢失值,但它不会在初始加载时预先填充表单。

    我哪里出错了?

    3 回复  |  直到 6 年前
        1
  •  7
  •   Peter 4lbertyson    6 年前

    可以将第二个参数传递给old()助手以提供默认值。所以你可以这样做:

    <input name="obj_email" type="text" value="{{old('obj_email',$myobject->obj_email)}}">
    

    因此,如果“old”值可用,它将使用该值,否则它将使用第一次加载表单时提供的默认值。

    以下是文件参考:

    https://laravel.com/docs/5.7/helpers#method-old

        2
  •  1
  •   Jaime Rojas    6 年前

    你没做错什么,但是 old() 最初将为空,因为实际上没有“旧”数据。尝试以下操作:

    <input name="obj_email" type="text" value="{{ old('obj_email')?: $myOjbect->obj_email }}">
    
        3
  •  1
  •   Tharaka Dilshan    6 年前

    这就是您需要实现的逻辑。

    old('value') 把这个值放进去,否则就放进去 $object->value .

    <input name="obj_email" type="text"
        value="old('obj_email') ? old('obj_email') : $myObject->my_email">