php - 如何在数据库laravel中存储动态表单数据?
问题描述
我的表格是这样的,我在数据库中有四行。
我正在尝试在 laravel 中保存动态表单。无法将数据数组保存到数据库中。以下是表格。
我正在努力处理由 Laravel 7 和 ajax 制成的动态。我在 youtube 上遵循了一些教程,但是当屏幕尺寸减小到最小时,我似乎可以展开切换按钮。由于我正在开始一个新项目,因此我将所有这些都应用到了 laravel 7 和 ajax 中,并在我的本地目录中打开了页面文件。请帮我!我已经被困了好几个小时了。
如何保存和更新?
刀
@extends('Admin.master')
@section('content')
<div class="p-5">
<h3><i class="fas fa-link ml-2"></i>لینک ها</h3><hr>
<form action="{{ route('links.store') }}" method="post">
@csrf
<div id="showDynamic">
</div>
<button type="submit" class="btn btn-success">ذخیره</button>
</form>
</div>
@endsection
@section('script')
<script>
$(document).ready(function(){
let count = 1;
dynamic();
function dynamic() {
let html = '' +
'@foreach ($links as $link)\n'+
'<div class="row mb-2">\n' +
'<div class="col-md-3">\n' +
'<input class="form-control" placeholder="عنوان" name="links['+count+'][title]" value="{{ $link->title }}">\n' +
'</div>\n' +
'<div class="col-md-3">\n' +
'<input class="form-control" placeholder="لینک" name="links['+count+'][link]" value="{{ $link->link }}">\n' +
'</div>\n' +
'<div class="col-md-2">\n' +
'<a class="btn btn-primary add">افزودن</a>\n' +
'<a class="btn btn-danger delete">حذف</a>\n' +
'</div>\n' +
'</div>\n';
count++;
html += '@endforeach';
$('#showDynamic').append(html);
}
$(document).on('click' , '.add' , function(){
count++;
addDynamic(count);
});
$(document).on('click', '.delete', function() {
$(this).parent().parent().remove();
});
addDynamic(count);
function addDynamic(number) {
let html = '' +
'<div class="row mb-2">\n' +
'<div class="col-md-3">\n' +
'<input class="form-control" placeholder="عنوان" name="links['+count+'][title]">\n' +
'</div>\n' +
'<div class="col-md-3">\n' +
'<input class="form-control" placeholder="لینک" name="links['+count+'][link]">\n' +
'</div>\n' +
'<div class="col-md-2">\n' +
'<a class="btn btn-primary add">افزودن</a>\n' +
'<a class="btn btn-danger delete">حذف</a>\n' +
'</div>\n' +
'</div>\n' +
'<span class="d-none">count++</span>';
$('#showDynamic').append(html);
}
});
</script>
@endsection
控制器
public function store(Request $request)
{
$this->validate(request() , [
'title' => 'required',
'link' => 'required',
]);
$links = collect([]);
if ($request->links) {
foreach ($request->links as $link) {
$model = Link::updateOrCreate([
'title' => $link['title']
], [
'link' => $link['link'],
]);
$links->push($model);
}
}
Link::whereNotIn('id', $links->pluck('id'))->delete();
return redirect()->back();
}
解决方案
推荐阅读
- javascript - 为什么检查的伪类在 css 中不起作用?
- java - 将霍夫曼编码的字符串写入Java文件时如何处理奇数字节?
- python - 测试列表中所有可能性的程序
- javascript - 如何在不知道调用者函数的情况下拦截 javascript 中的 api 调用?
- java - 将依赖项复制到 gradle 中的 libs 文件夹
- linux - Sublime Text:[Errno 2] 没有这样的文件或目录:'gopls'
- html - 将所有输入、标签和选择元素居中
- amazon-dynamodb - aws dynamodb 查询包含特殊字符的属性值?
- laravel - Laravel Postgres SQLSTATE [42601]:语法错误:7 错误:“”“”处或附近的零长度分隔标识符
- c++ - 即使所有数组都被删除 C++,内存仍然泄漏