【问题标题】:I want to use the same form to store/update in Laravel我想使用相同的表单在 Laravel 中存储/更新
【发布时间】:2020-07-14 06:51:57
【问题描述】:

我很想共享同一个表单来存储/更新 Laravel AJAX 表单上的数据。 所以我会根据用户想要执行的操作来更改表单方法。 IE。 存储方法:

<form method="post" action="{{action('TechnicianController@store')}}" id="formTec">
    @csrf

更新方法:

<form method="post" action="{{action('TechnicianController@store')}}" id="formTec">
    @csrf @method('PUT');

我有一个索引页面,其中包含我通过 Ajax 打开的表单

{{-- Form include  --}}
<div class="col-9" id="scheda" style="display:none">
  <form method="post" action="{{action('TechnicianController@store')}}" id="formTec">
    @csrf
  @include('technician.form')
</div>

知道我该如何解决这个问题吗?

谢谢

瓦莱里奥

【问题讨论】:

    标签: javascript jquery ajax laravel forms


    【解决方案1】:

    在索引文件中,我列出了以这种方式显示的技术人员列表

    @foreach ($technicians as $technician)
                  <li><i class="fa-li fa fa-square text-muted"></i><a href="#" onclick="event.preventDefault();tecShow({{ $technician->id }})"><small class="text-muted"># {{$technician->id}}</small>  {{$technician->nome}} {{$technician->cognome}}</a></li>
            @endforeach
    

    我还有一个按钮来创建一个新的技术

    <a onclick="event.preventDefault();openTecForm()" href="" class="btn btn-outline-muted btn-sm text-secondary">
    

    还有一个隐藏的 div 来显示表单

    <div class="col-9" id="scheda" style="display:none">
      <form method="post" action="{{action('TechnicianController@store')}}" id="formTec">
        @csrf
      @include('technician.form')
    </div>
    

    在我的 js 文件中,我有一些函数:

    openForm() -> 重置字段,设置按钮并显示隐藏的 div

    tecAdd() -> 执行ajax调用,存储内容并将结果追加到索引文件中的ul上

    tecShow(id) -> 填写来自base的表单数据

    tecEdit(id) -> 仍在处理,但它应该更新记录

    【讨论】:

    • 请查看我的原始答案中的 UPDATE 2
    【解决方案2】:

    您可以包含要更新的记录的 ID,并检查它是否存在于您的控制器中。如果没有,您可以创建一个新记录。

    更新

    <div class="col-9" id="scheda" style="display:none">
          <form method="post" action="{{action('TechnicianController@store')}}" id="formTec">
              @csrf
              // only on update form
              <input type="hidden" name="technician_id" value="{{ $technician->id }}">
              @include('technician.form')
          </form>
    </div>
    

    然后在你的控制器中:

    if ($request->input('technician_id'))
    {
        // Update code
    } else {
        // Create new code
    }
    

    更新 2

    这就是我的想法:https://codepen.io/205media/pen/abOxXzB

    只是在更新时而不是在创建新记录时附加技术人员 ID 的隐藏输入。

    【讨论】:

    • 谢谢。我可以问你一个例子吗?恐怕我不是很了解
    • 恐怕它不会踩到我的结构上。我最好解释一下我的代码是如何完成的。我有一个索引文件,显示技术人员列表,foreach 循环的结果。每个
    • 内部都有一个 href ,它调用一个函数来显示由数据填充的主表单。在同一个索引文件上,我有一个按钮,可以打开另一个简单地显示空表单的函数。所以我不明白如何在我的代码中加入你的建议。
  • 你能分享更多代码让我明白你的意思吗?
  • 猜你喜欢
    相关资源
    最近更新 更多
    热门标签