Проблема с массивом флажков редактирования Laravel - PullRequest
0 голосов
/ 24 мая 2018

Моя проблема Мне не удается правильно сохранить свои динамические флажки из моего edit.blade , они работают только при значениях 1, если установлен непроверенный флажокчерез скрытое поле будет перезаписан следующий набор отмеченных флажками значений.

Мой код У меня есть ресурс crud, который принимает заказы, форма в create.blade сам по себе имеет ряд динамических полей, которые добавляют новый продукт в заказ с помощью кнопки «добавить-новый», которая клонирует поля продукта.

Часть этой формы представляет собой несколько дней, которые работают нормально и хранятсяcorrecly.

Где я застреваю Я сделал edit.blade , чтобы использовать его для исправления любых ошибок, которые могут быть допущены при создании заказа.

Чтобы перезвонить разделу, который относится к флажкам дат, я использовал следующий синтаксис блейда (я знаю, что он отличается от создания, главным образом из-за того, что я пытался решить проблему)

@foreach($orders as $orderkey => $order)
@foreach($days as $day)
    {{ Form::hidden($day.'[]', 0, array('id'=> $day.'_hidden_'.$orderkey, 'class' => 'is-checkradio')) }}
    {{ Form::checkbox($day.'[]', 1, $order->{$day}, array('id'=> $day.'_'.$orderkey, 'class' => 'is-checkradio')) }}
    <label for="<?php echo $day.'_'.$orderkey; ?>"><?php echo $day; ?></label>
@endforeach
@endforeach

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

$customer = Customer::find($id);
    foreach($customer->orders as $key => $order){
        $Monday[] = $request->Monday[$key];
    };

 $updates = array(
     'Monday' => $Monday,
 );

foreach($updates['orders'] as $k => $update){
    $update_order->Monday = $updates['Monday'][$k];
    $update_order->save();
    };

Ответы [ 2 ]

0 голосов
/ 24 мая 2018

Узнал, как это исправить из Флажок снят, возвращая нулевое значение

Мне нужно было добавить мой $ orderkey к имени []

Так что в конце этоработал:

@foreach($days as $day)
        {{ Form::hidden($day.'['.$orderkey.']', null, array('id'=> $day.'_hidden_'.$orderkey, 'class' => 'is-checkradio')) }}
        {{ Form::checkbox($day.'['.$orderkey.']', 1, $order->{$day}, array('id'=> $day.'_'.$orderkey, 'class' => 'is-checkradio')) }}
        <label for="<?php echo $day.'_'.$orderkey; ?>"><?php echo $day; ?></label>        
@endforeach
0 голосов
/ 24 мая 2018

Эта часть:

foreach($customer->orders as $key => $order){
    $Monday[] = $request->Monday[$key];
};

Создает массив, в котором, если существующие данные верны и новые данные верны, сохраните их.В противном случае удалите его.Это означает, что любые флажки, которые были сняты с отметки , будут сняты, но любые вновь отмеченные флажки не будут.Это ваше намерение?

Почему бы просто не сделать:

$updates = array(
    'Monday' => $request->Monday,
);

Возможно, я не полностью понял ваш вопрос, поэтому, пожалуйста, прокомментируйте и / или измените вопрос, если вам нужно уточнить,

...