【问题标题】:How to pass correct data from a dynamic button in Laravel 5.8如何从 Laravel 5.8 中的动态按钮传递正确的数据
【发布时间】:2019-08-20 15:11:17
【问题描述】:

我有一个从我的数据库生成的动态按钮

我在刀片文件中的代码

<div class="input-group col-sm-12">
      <!--start of the form-->
       <form class="form-horizontal" method="POST" action="{{ route('call.store') }}">

           {{ csrf_field() }} 

           <!--input type hidden department code below -->

           @foreach($departments as $department)
           <input type="hidden" id="dept_name" name="dept_name" value="{{ $department->dept_name }}">

           <input type="hidden" id="called" name="called" value="NO">

           <!--buttons -->    
           <button type="submit" class="btn btn-success btn-fill pull-right" id="form-button-add">
           {{ $department->dept_name }}
           </button>
           @endforeach
        </form>
        <!--end-->   
 </div>

每当我单击其中一个时,它们都会根据每个按钮的值在我的呼叫数据库中添加一个数据。我的问题是当我点击收银员按钮时,将添加的值将是评估。

我在 CallController 中的代码

public function store(Request $request)
{
    $dept_id = Department::select('id')
        ->where('dept_name', $request->input('dept_name'))
        ->first();

    $let = Department::select('letter')
        ->where('dept_name', $request->input('dept_name'))
        ->first();
    $number = Department::select('start')
        ->where('id', $dept_id->id)         
        ->first();

    $call = Call::create([
        'dept_id' => $dept_id->id,
        'letter' => $let->letter,
        'number' => $number->start,
        'called' => $request->input('called')
    ]);

    Department::where('id', $dept_id->id)
    ->increment('start');

    return redirect()->route('call.index')->with('success' , 'NEW CALL');
}

我还对每个查询进行了 dd,发现将获得的值是来自评估的值或我的刀片文件中 foreach 循环的最后一个值。当我点击收银按钮而不是评估时,我如何获得收银员的价值。

我会展示我的数据库以便你理解我的问题

部门表:id,dept_name,letter,start(int,产生调用后递增)

计数器:id、counter_num、dept_id

调用表:id、dept_id、字母、数字、counter_id、被调用

【问题讨论】:

    标签: php laravel laravel-5 laravel-5.8


    【解决方案1】:

    当您单击任一按钮时,他们将提交其父表单。因为两者在同一个表单下,所以会提交第一个按钮的数据。您必须为每个按钮制作一个单独的表单,以便让他们提交自己的数据。

    <div class="input-group col-sm-12">
        @foreach($departments as $department)
            <form class="form-horizontal" method="POST" action="{{ route('call.store') }}">
               {{ csrf_field() }}
    
               <input type="hidden" id="dept_name" name="dept_name" value="{{ $department->dept_name }}">
               <input type="hidden" id="called" name="called" value="NO">
    
               <button type="submit" class="btn btn-success btn-fill pull-right" id="form-button-add">
                   {{ $department->dept_name }}
               </button>
            </form>
        @endforeach
     </div>
    

    【讨论】:

      【解决方案2】:

      您正在同一个表单中创建多个提交按钮。 在循环内添加标签,这样您就有了每个案例的唯一表单。

      当同一个表单中有多个提交按钮时,循环将结束,只有最后一个结果会映射到按钮,因此将提交循环中的最后一个信息。

      @foreach($departments as $department)
          <form class="form-horizontal" method="POST" action="{{ route('call.store') }}">
              {{ csrf_field() }} 
      
              <input type="hidden" id="dept_name" name="dept_name" value="{{ $department->dept_name }}">
              <input type="hidden" id="called" name="called" value="NO">
      
              <!--buttons -->    
              <button type="submit" class="btn btn-success btn-fill pull-right" id="form-button-add">
                 {{ $department->dept_name }}
             </button>
      </form>
      @endforeach
      
      

      【讨论】:

        猜你喜欢
        • 2021-08-13
        • 2019-10-12
        • 2019-05-17
        • 2022-01-09
        • 2019-02-05
        • 2020-11-01
        • 2020-04-08
        • 1970-01-01
        • 2021-02-19
        相关资源
        最近更新 更多