【发布时间】:2019-08-22 14:27:46
【问题描述】:
我使用 Laravel 创建了一个表单,可以使用 jQuery 添加和删除动态输入字段。
我现在正在尝试将数据插入数据库,但遇到了问题。我的数据库存在两个表;任务和问题。 “问题”表链接到任务表 bij task_id。这个 task_id 也应该发送到数据库,但我无法得到它,赖特。请参阅下面的代码。
感谢您的帮助。
问题控制器.php
- 第一种方法有效,但我的任务 ID 为“null”。从所有字段中插入所有记录。
- 第二种方法只添加了1个字段的数据,但添加了正确的id。
public function store(Request $request, Issue $issue, Task $task)
{
## First method
// foreach($request->issueInfo as $key => $value) {
// Issue::create($value);
// }
## Second method
foreach ($request->issueInfo as $key => $name) {
dd($name);
$names[] = [
'task_id' => $task->id,
'issue_name' => $name,
'issue_time' => $name,
'issue_date' => $name,
'issue_type' => $name,
];
}
Issue::insert($names);
return back();
}
web.php
Route::post('/tasks/{task}/issues', 'IssueController@store');
show.blade.php
@extends('layout')
@section('content')
<script>
$(document).ready(function() {
var i = 1;
$('.addmore').click(function(){
i++;
$('#dynamicFields').append('<div class="form-group"><label for="issue_name">Issue Name</label><select class="form-control" name="issueInfo['+i+'][issue_name]"><option></option><option value="Error">Error</option><option value="Grammer">Grammer</option><option value="Undefined">Undefined</option><option value="Typpo">Typpo</option><option value="No errors">No errors</option></select></div><div class="form-group"><label for="issue_date" class="label">Issue Date</label><input class="form-control" type="date" name="issueInfo['+i+'][issue_date]"></div><div class="form-group"><label for="issue_time" class="label">Issue Time</label><input class="form-control" type="time" name="issueInfo['+i+'][issue_time]" ></div><div class="form-group"><label for="issue_type" class="label">Issue Type</label><select class="form-control" name="issueInfo['+i+'][issue_type]"><option></option><option value="False45">False45</option><option value="False104">False104</option></select></div><div class="form-group"><button type="button" class="btn btn-danger remove-field">Remove</button></div>');
});
// Removing fields
$('#dynamicFields').on('click', '.remove-field', function(){
$(this).parents('div').remove(); i--;
})
});
</script>
<div class="form-group"><label for="issue_name">Name</label></div>
<head>Testing the creation of multiple fields</head>
<form action="/tasks/{{$task->id}}/issues" method="post" >
@csrf
<div id="dynamicFields">
<div class="form-group">
<label for="issue_name">Issue Name</label>
<select class="form-control" name="issueInfo[0][issue_name]">
<option></option>
<option value="Error">Error</option>
<option value="Grammer">Grammer</option>
<option value="Undefined">Undefined</option>
<option value="Typpo">Typpo</option>
<option value="No errors">No errors</option>
</select>
</div>
<div class="form-group">
<label for="issue_date" class="label">Issue Date</label>
<input class="form-control" type="date" name="issueInfo[0][issue_date]" value="{{old('issue_date')}}">
</div>
<div class="form-group">
<label for="issue_time" class="label">Issue Time</label>
<input class="form-control" type="time" name="issueInfo[0][issue_time]" value="{{old('issue_time')}}">
</div>
<div class="form-group">
<label for="issue_type" class="label">Issue Type</label>
<select class="form-control" name="issueInfo[0][issue_type]">
<option></option>
<option value="False45">False45</option>
<option value="False104">False104</option>
</select>
</div>
<div class="form-group">
<input type="button" name="submit" id="submit" class="btn btn-primary addmore" value="+" />
</div>
<div class="form-group">
<button type="submit" class="btn btn-primary">New Location</button>
</div>
</div>
</form>
@endsection
当我在控制器中执行 dd($names) 时输出
array:1 [▼
0 => array:5 [▼
"task_id" => 1
"issue_name" => array:4 [▼
"issue_name" => "Error"
"issue_date" => null
"issue_time" => null
"issue_type" => null
]
"issue_time" => array:4 [▼
"issue_name" => "Error"
"issue_date" => null
"issue_time" => null
"issue_type" => null
]
"issue_date" => array:4 [▶]
"issue_type" => array:4 [▶]
]
]
【问题讨论】:
-
你的代码有什么问题?
-
你能显示路线定义吗?
-
@GiacomoM 我无法将所有记录发送到数据库。在我的控制器中,我必须将生成的数组发送到数据库。我在发送所有数据时遇到问题。 1 所有数据都已发送,但我的 task_id 为空。在第二种方法中,我尝试添加正确的 id,但所有其他字段都为 null 而不是给定的值。
-
@Bryan 我已发送路线
-
我刚刚注意到,当您按下删除键时。所有字段都消失了,这会发生吗?
标签: php arrays laravel input field