Laravel 5.1, обновите несколько значений с установленным флажком - PullRequest
0 голосов
/ 22 апреля 2019

В Laravel 5.1 мне нужно обновить несколько значений из отмеченного флажка.

Я могу редактировать некоторые реестры из таблицы, нажимая кнопку редактирования для каждого реестра, и эта кнопка отправляет меня на editview

(Это вид редактирования для отдельного реестра) enter image description here

С URL: http://myapp/someroute/2246/edit, где 2246 - это id.

Внутри этого редактирования я могу обновить 4 поля.Одно из этих полей называется «мое состояние» и может иметь значения 1, 2 или 3.

Теперь мне нужно сделать функцию множественного редактирования, где я могу проверить каждыйСтрока таблицы, которую мне нужно обновить одновременно (у каждой есть name=someid), а затем нажмите некоторую кнопку с именем «Проверить», и обновите для каждого поля строки только 1, поле my state, и новое значение будет всегда1 (на рисунке значения строковые, но это только для вида).

enter image description here

Вопрос: как я могувызвать метод update для каждого идентификатора, который я выбираю в представлении?каждый флажок ввода имеет свой собственный name, который является идентификатором реестра, который я буду обновлять .

Метод update просто проверяет некоторые значения из представления и затем вызывает некоторый метод myedit, но в этом случае я прыгну update и сразу перейду к myedit, что-то вроде:

public function myedit(Request $request, $id) {
    $obj                  = Self::findOrFail($id);
    $obj->fk_id_comuna    = $req['fk_id_comuna'];
    $obj->fk_id_user      = $usuario_id;
    $obj->date            = \Carbon\Carbon::now();
    $obj->fk_id_my_state  = $estado; //THIS IS THE ONLY FIELD THAT I WILL EDIT, ALWAYS WITH THE SAME VALUE `1`
    $obj->save();

Я пытался сделать form для этой кнопки Validate, но яне знаю, как обрабатывать несколько идентификаторов за один вызов метода edit.

<form action="{!! route('myroute.update', ['id' => [HERE, HOW CAN I PASS MULTIPLE ID FROM THE CHECKED CHECKBOX] ]) !!}" method="POST">
    <input type="submit" class="btn btn-primary pull-right" value="Validar" />
</form>

Я думал о функции javascript, которая собирает в массив каждое проверенное имя флажка и вызывает myeditметод напрямую, без form вида, может быть?

Ответы [ 2 ]

1 голос
/ 22 апреля 2019

В JS я сделал это:

var optionsChecked = [];
    $('.options:checkbox:checked').each( function(){
    optionsChecked .push($(this).val());
});

Тогда в ajax:

$.ajax({
    type: 'POST',
    data: {'id': optionsChecked },
    etc

Тогда в PHP:

$all = $request->input('id');
foreach ($all as $id){
    //whole obj->* = *;
    $obj->save();
}
1 голос
/ 22 апреля 2019

О передаче нескольких значений как одного Request значения.
Предположим, у вас есть такая форма:

<form method="post">
    <input type="checkbox" name="options[]" value="foo"/>foo<br/>
    <input type="checkbox" name="options[]" value="bar"/>bar<br/>
    <input type="checkbox" name="options[]" value="buz"/>buz<br/>
    <input type="submit" value="Submit" />
</form>

Ваш request('options') будет массивом: ["foo", "bar", "buz"].
Thanвы можете перебрать options, используя foreach.

Внутри вашего update метода вы можете использовать:

foreach ($option as request('options')) {
    //put your previous code here, so it'd be applied for every option
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...