Laravel 表单请求动态字段在重定向时消失

Posted

技术标签:

【中文标题】Laravel 表单请求动态字段在重定向时消失【英文标题】:Laravel Form Request Dynamic Fields dissapear on Redirect 【发布时间】:2017-11-09 06:39:20 【问题描述】:

我有一个表单、一个向表单添加更多项目的按钮以及表单请求验证文件。 一切正常,除了一件事: 当用户添加一个字段(点击“+添加文档编号”后)并输入数据库中已经存在的值时:

验证工作正常并将用户重定向到同一页面,但现在只有一个字段:

问题:如何使图片 1 中的所有字段都保留在图片 2 中?

我的代码:

表单本身:

<form>
  <div class='inputs'>    
    <label>Doc number: </label>
    <input type="text" name="doc_fullnumber[1]" value="old('doc_fullnumber.1')">
  </div>
  <button id='add_item'>Add doc number</button>
  <input type="submit" value="Submit">
</form>

如果用户单击“按钮”,则添加一个输入的 jquery 代码:

$(document).ready(function()
    $('#add_item').on('click', function (event) 
        event.preventDefault();
        var i = 2;
        $new_docnumber = $(         
            '<br><br>'+
            '<label>Номер док-та: </label>'+ 
            '<input type="text" name="doc_fullnumber['+i+']" placeholder="Номер док-та" value="old('doc_fullnumber.[i]')">');
        $('.inputs').append($new_passenger);
    )
)

Laravel 的 FormRequest 文件中的有效表单验证:

public function rules()

    return [

        'doc_fullnumber' => 'unique:tourists'

    ];


public function messages()

    return ['doc_fullnumber.unique' => 'Doc number is already in DB!'];

感谢任何帮助的人!

【问题讨论】:

【参考方案1】:

试试这个

return Redirect::back()->withInput(Input::all());

【讨论】:

我应该在哪里添加它?我正在使用表单验证,而不仅仅是常规验证。 在您的验证下,如果所有验证通过则返回Redirect::back()-&gt;withInput(Input::all());【参考方案2】:

这是正常的,因为原始 DOM 加载时没有 JS 附加元素,我建议您改用 JQuery(Ajax)。

如果你仍然想使用你的代码,你应该使用 JS 重新创建请求参数,你需要通过使用 key 数组循环访问 URL 请求的参数来创建输入 name="key" value="value" ,希望对您有所帮助。

这是获取婴儿车的代码:

var qd = ;
if (location.search) 
  location.search.substr(1).split("&").forEach(function(item) 
  var s = item.split("="),
    k = s[0],
    v = s[1] && decodeURIComponent(s[1]);
  (qd[k] = qd[k] || []).push(v)
)

【讨论】:

或者他可以制作一个ajax,如果成功则提交表单,如果不成功则返回错误,新添加的输入将保留 @lewis4u 谢谢,我编辑我的答案以使用 JQuery Ajax 澄清

以上是关于Laravel 表单请求动态字段在重定向时消失的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 4.1 身份验证会话数据不会跨请求持久化

Auth::user 不会在重定向时保留

在运行时添加的动态字段在页面重新加载时消失

Struts2页面重定向

React js在重定向到新路由后显示通知

如何将所有访客请求重定向到 Laravel 应用程序中的登录页面?