首页 > 解决方案 > 如何在数据库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();
}

标签: phplaravel

解决方案


推荐阅读