в laravel передать обновленное значение из представления в контроллер без кнопки отправки - PullRequest
0 голосов
/ 17 июня 2019

Я утомляюсь хранить manager auth id, у меня есть страница просмотра с содержимым пользовательских билетов, в имени моей базы данных с именем "ticket" в этой таблице у меня есть имя столбца с именем "ticket_view_by_manager_id", в этом столбце япри попытке сохранить менеджер auth id, когда менеджер откроет этот тикет, этот идентификатор аутентификации менеджера времени сохранит в этом столбце "ticket_view_by_manager_id",

мой контроллер

public function manager_assigned_Chat(Request $request, $ticket_id){

         $this->validate($request, [
         'ticket_view_by_manager_id' => 'required',
        ]);

           $input = User_Ticket::find($ticket_id);
           $input['ticket_view_by_manager_id'] = $request->submit;

           $input->save();

    }

мой маршрут

Route::post('user_ticket_chat{ticket_id}', 'Services\User_TicketController@manager_assigned_Chat')->name('user_ticket_chat{ticket_id}');

мой вид "показывать весь список пользователей"

<table id="myTable" class="table table-bordered table-striped">
    <thead>
        <tr>
            <th>slNo</th>
            <th>Ticket ID</th>
            <th>Subject</th>
            <th>Status</th>
            <th>Last Update</th>
            <th>Created</th>
        </tr>
    </thead> 
    <tbody>
        <form method="POST"  action="{{ route('user_ticket_chat{ticket_id}')}}"  enctype="multipart/form-data">
            @csrf
            @foreach ($my_tickets as $key=>$my_tickets_list)
                <tr>
                    <td style="text-align:center"> {{ $key + 1  }} </td>
                    <td >{{  $my_tickets_list->ticket_id }}</td>
                    <td > <input type="hidden" name="submit" value="{{ Auth::user()->staff_id }}" href="ticket_chat{{ $my_tickets_list->ticket_id }}" >{{  $my_tickets_list->subject }}</td>
                    <td style="text-align:center">
                    @if($my_tickets_list->status == 'OPEN')
                    <span class="btn waves-effect waves-light btn-sm btn-success">OPEN</span>
                    @elseif($my_tickets_list->status == 'COMPLETE')
                    <span class="btn waves-effect waves-light btn-sm btn-info">COMPLETE</span>
                    @else($my_tickets_list->status == 'PENDING')
                    <span class="btn waves-effect waves-light btn-sm btn-danger">PENDING</span>
                    @endif
                    </td>
                    <td >{{$my_tickets_list->created_at->todatestring()}}  </td>
                    <td >{{$my_tickets_list->updated_at->todatestring()}}  </td>
                </tr>
            @endforeach
            <input type="submit" value="Send.">
        </form>  
    </tbody>
</table>

Ответы [ 2 ]

0 голосов
/ 17 июня 2019

в вашем web.php

Route::post('user_ticket_chat','Services\User_TicketController@manager_assigned_Chat')->name('user_ticket_chat');

в вашем контроллере

public function manager_assigned_Chat(Request $request){
        $this->validate($request,[
         'ticket_id' => 'required',
       ]);
       $input = User_Ticket::find($ticket_id);
       $input->ticket_view_by_manager_id = Auth::user()->id; // or Auth::user()->staff_id; in your case 
       $input->save();
}

в режиме блэйда добавьте метатег:

<meta name="csrf-token" content="{{ csrf_token() }}">

в таблице:

<table id="myTable" class="table table-bordered table-striped">
   <thead>
     <tr>
         <th>slNo</th>
         <th>Ticket ID</th>
         <th>Subject</th>
         <th>Status</th>
         <th>Last Update</th>
         <th>Created</th>
     </tr>
    </thead> 
    <tbody>
          @foreach ($my_tickets as $key=>$my_tickets_list)
          <tr>
           <tdstyle="text-align:center"> {{ $key + 1  }} </td>
           <td>{{  $my_tickets_list->ticket_id }}</td>
           <td class="ticket" data-ticketid="{{ $my_tickets_list->ticket_id}}">{{  $my_tickets_list->subject }}</td>
         <td style="text-align:center">
        @if($my_tickets_list->status == 'OPEN')
        <span class="btn waves-effect waves-light btn-sm btn-success">OPEN</span>                                                                   
        @elseif($my_tickets_list->status == 'COMPLETE')
        <span class="btn waves-effect waves-light btn-sm btn-info">COMPLETE</span>
        @else($my_tickets_list->status == 'PENDING')
       <span class="btn waves-effect waves-light btn-sm btn-danger">PENDING</span>
        @endif
        </td>
        <td>{{$my_tickets_list->created_at->todatestring()}}  </td>
       <td>{{$my_tickets_list->updated_at->todatestring()}}  </td>
       </tr>
      @endforeach
  </tbody>
  </table>

теперь используется запрос Jquery AJAX:

<script>
  $(document).on('click','.ticket',function(){
      var ticketID=$(this).attr('data-ticket');
      $.ajax({
         url:'/user_ticket_chat',
         type:'POST',
         headers: {
            'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
          },
         dataType:'json',
         data:{"ticket_id":ticketID},
         success:function(response){
             console.log(response);
         },
         error:function(){
            alert('Error');
         }
      });
  });
</script>
0 голосов
/ 17 июня 2019

Вы должны изменить свой валидатор.Это будет как, Пожалуйста, попробуйте это:

$this->validate($request, [    
    'submit' => 'required',    
]);

Поскольку вы не отправляете никакой информации о ticket_view_by_manager_id из поля зрения.

Предложение: возможно, ваш код не очень хорошоукрашен.Если вы можете, пожалуйста, посмотрите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...