Как отправить данные в базу данных по клику? - PullRequest
0 голосов
/ 04 октября 2019

У меня есть кнопка, которая открывает модал с текстом внутри. Каждая кнопка связана с id письма.
В базе данных, mailbox->read, значение по умолчанию равно 0, что означает, что оно не прочитано. Я хочу отправить значение от 1 до mailbox->read при нажатии на модал, что означает, что оно прочитано.

Как я могу это сделать?

Вот мой взгляд:

<a href="" class="btn btn-primary btn-xs" data-toggle="modal" data-target="#exampleModal{{$key+1}}">
<i class="icon-eye" style="color: white"></i>
</a>

<!-- Modal -->
<div  @if ($key === 0)  @endif  class="modal fade" id="exampleModal{{$key+1}}" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true">
  <div class="modal-dialog" role="document">
    <div class="modal-content">
      <div class="modal-header">
        <h5 class="modal-title" id="exampleModalLabel">Modal title</h5>
        <button type="button" class="close" data-dismiss="modal" aria-label="Close">
          <span aria-hidden="true">&times;</span>
        </button>
      </div>
      <div class="modal-body">
          {{$inbox->pivot->message}}
      </div>
      <div class="modal-footer">
        <button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
      </div>
    </div>
  </div>
</div>

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

public function mailbox()
    {
        if ($user = Sentinel::check())
        {
            $data = $this->data;
            $id = $user->id;

            $data['users'] = User::findOrfail($id);

            $data['title'] = 'Mailbox';

            if(\Session::get('tabname') != "")
                {
                    $data['tabname'] = \Session::get('tabname');
                }else{
                    $data['tabname'] = "inbox";
                }
            return view('mailbox.mailbox',$data);
        }
        else
        {
            return redirect('home');
        }
    }

Ответы [ 2 ]

1 голос
/ 04 октября 2019

Определите метод в вашем контроллере и отправьте данные, используя ajax request.

шаблон:

<a href="" class="btn btn-primary btn-xs js-read" data-toggle="modal" data-target="#exampleModal{{$key+1}}">
<i class="icon-eye" style="color: white"></i>
</a>

<!-- Modal -->
<div  @if ($key === 0)  @endif  class="modal fade" id="exampleModal{{$key+1}}" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true">
  <div class="modal-dialog" role="document">
    <div class="modal-content">
      <div class="modal-header">
        <h5 class="modal-title" id="exampleModalLabel">Modal title</h5>
        <button type="button" class="close" data-dismiss="modal" aria-label="Close">
          <span aria-hidden="true">&times;</span>
        </button>
      </div>
      <div class="modal-body">
          {{$inbox->pivot->message}}
      </div>
      <div class="modal-footer">
        <button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
      </div>
    </div>
  </div>
</div>

Маршрут:

Route::post('/set-read',[
    'uses' => 'Controller@ajaxSetRead'
]);

Контроллер:

public function ajaxSetRead()
    {
        $buttonId = INPUT::get('buttonId');
        ...
    }

Файл JS:

$('.js-read').on('click', function (e) {
$.ajax({
    url     : '/set-read',
    method  : 'post',
    data    : {
        buttonId  : this.data('target')
    },
    headers:
    {
        'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
    },
    success : function(response){

    }
});
});
0 голосов
/ 04 октября 2019

вы должны инициировать событие при открытии модального события;Вы можете получить доступ к событию модального открытия, как показано ниже:

$("#exampleModal{{$key+1}}").on('shown.bs.modal', function(){
   alert("just before modal open");

   var hostAPI = "yourdomain.dev/mail/seen/{{$key+1}}";
   $.get( hostAPI, function( data ) {
     console.log("now you can change row style to seen type.");
   });
});

, затем вам нужно создать маршрут для поворота "видимый" от 0 до 1;

Route::get('mail/seen/{id}', 'YourController@updateSeenStatus')->where('id', '[0-9]+');

после того, как вы должны изменить записьв updateSeenStatus;вот и все. надеюсь, что это работает.

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