Laravel: Как изменить значение определенного поля при нажатии кнопки? - PullRequest
0 голосов
/ 28 января 2019

Я хотел использовать ajax для этого, но я перепробовал все ссылки, которые видел, но, похоже, все еще не работает.Я новичок в использовании laravel, пожалуйста, помогите мне.

это мой метод в моем контроллере

    public function delete(Request $request, $id)
    {
      $validator = Validator::make(Input::all(), $this->rules);
       if ($validator->fails()) {
         $errorMessage = Config::get('const.error.common.missing_required.desc');
         $errorContainerHtml = parent::renderErrorContainerView($errorMessage);
         $response = response()->json(compact('errorContainerHtml'), 400);
       } else {
         try {
            $codes = Model::select ('id', 'status'))
                ->whereId($id)
                ->first();

            if ($codes ->status == 1){
               $codes ->status = 0;
            }else{
               $codes ->status = 1;
            }
            $codes ->save();
            $response = response()->json($codes );
          } catch (\Exception $e) {
            $errorMessage = Config::get('const.error.common.system_error.desc');
            Log::error($e);
            $errorContainerHtml = parent::renderErrorContainerView($errorMessage);
            $response = response()->json(['error' => compact('errorContainerHtml')], 500);
         }    
        }
      return $response;
}

это мой ajax

$('.modal-footer').on('click', '#delete', function() {
        loader.show();
        $.ajax({
            type: 'POST',
            url: '/master/rgbCodes/changeStatus',
            data: "status=" + status,
            success: function(data) {
                 if(data == 1){
                     $(data.status == 0);
                     showAlertSuccess('<b>Successfully added RGB Code information.</b>');
                    window.location.reload();
                } else {
                    $(data.status == 1);
                }
            },
            error: data => {
                showAlertDanger(data.responseJSON.error.errorMessage);
                loader.hide();
            },
            complete: () => {
                loader.hide();
            }
        });
    });

и этомой модал и маршрут

<div id="deleteModal" class="modal fade" role="dialog">
            <div class="modal-dialog modal-dialog-centered" role="document">
                <div class="modal-content">
                    <div class="modal-body">
                        <p class="font-weight-bold">Are you sure you want to deactivate this data?</p>
                       <input type="hidden" name="status" id="status">
                    </div>
                    <div class="modal-footer smarts-modal-footer">
                        <button type="submit" class="btn btn-light" data-dismiss="modal" id="delete">Yes</button>
                        <button type="button" class="btn btn-light" data-dismiss="modal">No</button>
                    </div>
                </div>
            </div>
        </div>

Route::post('/master/rgbCodes/status/{status}', 'RgbCodeController@changeStatus')->name('master.rgbCodes.changeStatus');

Что я планирую сделать, когда пользователь нажмет кнопку корзины, появится модальное подтверждение, если они обязательно деактивируют этого пользователя.Если они нажимают кнопку Да, статус в таблице будет неактивным в конкретной строке, где они щелкают значок корзины. Но я не могу этого сделать, я потратил 2 дня, пытаясь это исправить, и продолжаю повторять все методы, которые видели в Интернете.

Пожалуйста, не игнорируйте это .. Пожалуйста.Спасибо!

1 Ответ

0 голосов
/ 30 января 2019

Укажите это в модале подтверждения

<script>
    function Confirm(my_function) {
       $('#confirm-modal').modal('toggle');
       var confirmButton = document.getElementById('my-confirm-button');
       confirmButton.onclick = function () {
            my_function();
            $('#confirm-modal').modal('toggle');
       };
    };
</script>

, а затем добавьте в событие кнопки

    $('#my-button').on('click', function () {
        Confirm(function () {
            //Do your thing, change the table properties here
        });
    });
...