【问题标题】:Form::file: How to repopulate with Input::old After Validation Errors and/or on Update?Form::file: 如何在验证错误和/或更新后使用 Input::old 重新填充?
【发布时间】:2014-05-04 18:11:07
【问题描述】:

在我的 PhotosController 中,我正在尝试修改编辑操作,以便它在 Form::file() 输入字段中显示现有值(并且,如果验证失败,它会重新填充该字段)。

if ($validation->passes())
{
        // saves the image on the FS and updates the db entry
}

    return Redirect::route('photos.edit')
        ->withInput(Input::all())
        ->withErrors($validation)
        ->with('message', 'There were validation errors.');

上传过程正常,但是当我查看现有记录时,或者如果在创建时验证失败,Form::file 不会显示该值。我在 api 中查找了该方法,它只接受名称和可选选项数组。而 FormBuilder 类中的其他方法允许我们使用 Input::old() 设置值。

我尝试将以下值传递给 withInput,但它们无济于事: * 输入::all() * 输入::旧() * 输入::except('photo_path') * 输入::get('photo_path')

如何更新它,以便在验证失败或用户查看现有记录时,Form::file() 方法将显示现有值?

我确信我忽略了一些非常简单的事情,因为我还没有找到其他人问这个问题......

【问题讨论】:

    标签: php validation file-upload laravel-4


    【解决方案1】:

    显然你不能。 出于安全原因,浏览器不允许您在文件输入上设置值。

    有两个类似的问题,与 laravel 无关,但我认为答案可以帮助你:

    Can you re-populate file inputs after failed form submission with PHP or JavaScript?

    Restoring the value of a input type=file after failed validation

    【讨论】:

    • 啊,这确实有道理。谢谢你启发我。 ;) 我将使用 JavaScript ......这应该可以解决这两个问题;验证和更新记录。通过使用 JS,我将能够使用数据库中的当前值更新 select option,以便设置 Form::file() onLoad。感谢您为我指明正确的方向。
    【解决方案2】:

    也许你最好的办法是让验证客户端(javascript/jquery)。

    当然必须有(总是)服务器端验证。 (记住 javascript 可以在客户端禁用)。

    但我相信,这种方式99.99%的情况下,表单提交都会成功!

    基本上,当确实提交时,它已经使用与服务器相同的规则进行验证,所以它不会提交,直到它不是“服务器喜欢”:)

    干杯

    【讨论】:

      【解决方案3】:

      对于复杂的表单提交,我建议使用 AJAX:

      1. 您可以执行第一个 AJAX 表单发送来进行服务器端验证。
      2. 然后,如果一切正常,您应该通过 Javascript 启动带有文件输入的 POST 表单。

      我已经为 Laravel 回答了一个类似的问题,但我希望它对一般方法有所帮助:Laravel 5.1: keep uploaded file as old input

      【讨论】:

        【解决方案4】:

        移除重定向,您的验证和输入值应该显示在同一页面上,只有在成功时才会重定向。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2016-10-09
          • 2016-01-10
          • 1970-01-01
          • 2011-01-27
          • 2019-08-26
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多