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()->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 表单请求动态字段在重定向时消失的主要内容,如果未能解决你的问题,请参考以下文章