Изменить метод и действие внутри атрибута кнопки - PullRequest
0 голосов
/ 28 января 2019

Я хочу изменить метод формы с помощью функции button.onclick.Мой код работает прямо сейчас, но выглядит грязным, и если у меня будет слишком много кнопок, они превратятся в нечитаемый блок кода.Есть ли у нас возможность установить его с помощью button.onclick?Нечто подобное ((onclick="form.method='patch'"))

Я нашел что-то об этом, но они не работали. Мне нужно изменить метод и маршрут в <button ((this area))> SUBMIT </button> Если есть какой-либо способ сделать это, я жду ваших ответов.

index.blade.php

@if($backup->trashed())                                       
{{ Form::open(['route' => ['backup.patch', $backup->id], 'method'=>'patch', 'role'=>'form']) }}
@endif
@if(!$backup->trashed()) 
{{ Form::open(['route' => ['backup.delete', $backup->id], 'method'=>'delete', 'role'=>'form']) }}
@endif
    <div class="btn-group btn-group-xs" role="group" aria-label="Config Tools">
        <button type="button" class="btn btn-default" data-toggle="tooltip" data-placement="bottom" title="Edit" onclick="window.location='{{ url("backup/{$backup->id}") }}'">
            <span class="glyphicon glyphicon-pencil" aria-hidden="true"></span>
        </button>
        @if($backup->trashed())                                       
        <button type="submit" class="btn btn-default" data-toggle="tooltip" data-placement="bottom" title="Activate">
            <span class="glyphicon glyphicon-ok" aria-hidden="true"></span>
        </button>
        @endif
        @if(!$backup->trashed())                                      
        <button type="submit" class="btn btn-default" data-toggle="tooltip" data-placement="bottom" title="Delete">
            <span class="glyphicon glyphicon-trash" aria-hidden="true"></span>
        </button>
        @endif
    </div>
{{ Form::close() }}

web.php

Route::get('/backup/{id}', 'Admin\BackupController@show')->name("backup.show");
Route::post('/backup/{id}', 'Admin\BackupController@update')->name("backup.update");
Route::delete('/backup/{id}', 'Admin\BackupController@delete')->name("backup.delete");
Route::patch('/backup/{id}', 'Admin\BackupController@patch')->name("backup.patch");

Результаты моего поиска:

https://css -tricks.com / Отдельная форма-submit-buttons-go-different-urls / https://www.w3schools.com/tags/att_button_formmethod.asp

Спасибо за ваши ответы

Редактировать: Вы можете спросить «Почему вы не написали форму для каждой кнопки?»

Яотвечая, если я напишу форму внутри <div class="btn-group btn-group-xs" role="group"> кнопки, появляющиеся отдельно.

Вот так: http://jsfiddle.net/kmgd4z17/1/

Но я хочу их как: http://jsfiddle.net/tg21j0f7/

1 Ответ

0 голосов
/ 06 февраля 2019

index.blade.php

<div class="btn-group btn-group-xs" role="group" aria-label="Config Tools">
    <button type="button" class="btn btn-default" data-toggle="tooltip" data-placement="bottom" title="Edit" onclick="window.location='{{ url("backup/{$backup->id}") }}'">
        <span class="glyphicon glyphicon-pencil" aria-hidden="true"></span>
    </button>
    @if($backup->trashed())                                
    <button type="button" class="btn btn-default" onclick="javascript : submitForm('PATCH', {{$backup->id}})" data-toggle="tooltip" data-placement="bottom" title="Activate">
        <span class="glyphicon glyphicon-ok" aria-hidden="true"></span>
    </button>
    @endif
    @if(!$backup->trashed())                                         
    <button type="button" class="btn btn-default" onclick="javascript : submitForm('DELETE', {{$backup->id}})" data-toggle="tooltip" data-placement="bottom" title="De-Activate">
        <span class="glyphicon glyphicon-trash" aria-hidden="true"></span>
    </button>
    @endif
</div> 

script

<script>
    function submitForm($method, $id){

        var form = document.createElement("form");
        form.setAttribute('method', "POST");
        form.setAttribute('action',"/backup/" + $id);

        var i = document.createElement("input");
        i.setAttribute('type',"hidden");
        i.setAttribute('name',"_method");
        i.setAttribute('value', $method);
        form.appendChild(i);

        var j = document.createElement("input");
        j.setAttribute('type',"hidden");
        j.setAttribute('name',"_token");
        j.setAttribute('value', "{{Session::token()}}" );
        j.setAttribute('id',"csrf-token");
        form.appendChild(j);

        document.body.appendChild(form);

        form.submit();

    }       
</script>

Я решил эту проблему с помощью этого метода.Я создаю форму при нажатии на кнопку.Может быть, кто-то может решить более эффективным способом, но мое решение заключается в следующем.:)

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