为了账号安全,请及时绑定邮箱和手机立即绑定

如何在laravel中以单一形式处理多个输入?

如何在laravel中以单一形式处理多个输入?

慕桂英546537 2021-06-28 13:56:52
我有一个表格,我要求用户标记他们的出席情况,我发送Carbon::now()作为默认和隐藏输入,每当用户点击按钮时,它应该存储在数据库中,但问题是我有四个这样的字段,每当我点击提交按钮它存储所有字段的值。我对这件事很陌生,请帮助我。我也包括代码。看法:<div class="card" style="max-width: 600px; margin:auto; margin-bottom:50px;margin-top:40px;">    <div class="card-header" style="text-align:center">        Today: @php $today = \Carbon\Carbon::now()->format('d-m-Y'); @endphp &nbsp; {{$today}}    </div>    <form action="{{ route('timesheet.store') }}" method="POST">        @csrf    <div class="card-body">        @php            $now = \carbon\Carbon::now();        @endphp        <ul class="list-group">            <li class="list-group-item">                <label for="in_time">Day start</label>                <input name="in_time" type="datetime" style="display:none" value="{{$now}}">                <span style="float:right"><button type="submit" class="btn btn-success btn-sm">Mark</button></span>            </li>            <li class="list-group-item">                <label for="break_out">Break-out</label>                <input name="break_out" type="datetime" style="display:none" value="{{$now}}">                <span style="float:right"><button type="submit" class="btn btn-success btn-sm">Mark</button></span>            </li>我必须做的是:当用户点击“标记”按钮时,该特定字段的值和其余字段应该与空值一起存储,因为所有列都可以为空。一旦用户点击按钮并且值成功存储在数据库中,按钮应替换为刻度线按钮,并应禁用到第二天,即午夜。任何帮助将不胜感激。抱歉,由于未使用堆栈溢出,因此问题格式错误。
查看完整描述

2 回答

?
波斯汪

TA贡献1811条经验 获得超4个赞

请试试这个,


public function store(Request $request)

{

    Timesheet::create([

        'in_time' => $request->get('in_time'),

        'out_time' => $request->get('out_time'),

        'break_out' => $request->get('break_out'),

        'break_in' => $request->get('break_in'),

        'user_id' => \Auth::user()->id,

    ]);



    return redirect()->route('timesheet.create')

        ->with('success', 'Attendance marked successfully.');

}


查看完整回答
反对 回复 2021-07-08
?
冉冉说

TA贡献1877条经验 获得超1个赞

这听起来像是 AJAX 的工作。


步骤1:


为所有按钮添加通用类


// new time-btn class

<span style="float:right"><button type="submit" class="btn btn-success btn-sm 

btn time-btn">Mark</button></span>

第2步:


获取数据并使用 AJAX 发送(使用 jquery):


$(document).on('click', '.time-btn', function(e) {

   e.preventDefault();


   // get value of first input before the button

   var time = $(this).prev('input').val();

   // get input name

   var name = $(this).prev('input').attr('name')


   // validate time if necessary


     $.ajax({

        url: '/time/store', // insert route url here

        type: 'POST',

        data: {time: time, name: name},

        success: function( response ) {

            response = JSON.parse( response );

           // add tick mark to button here

        },

        error: function (xhr, status, error) {

            console.log( xhr.responseText );

        }

     });

  });

第 3 步:


更新控制器


public function store(Request $request)

{   


Timesheet::create([

    'in_time' => request('name') == 'in_time' ? request('time') : null,

    'out_time' => request('name') == 'out_time' ? request('time') : null,

    // do the same for tother

    ...

    'user_id' => Auth::user()->id,

]);



return redirect()->route('timesheet.create')

    ->with('success', 'Attendance marked successfully.');

}


查看完整回答
反对 回复 2021-07-08
  • 2 回答
  • 0 关注
  • 154 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信