Laravel обновить базу данных значением из опции - PullRequest
0 голосов
/ 23 апреля 2020

Я пытаюсь обновить значение в моей базе данных из списка выбранных пользователем опций.

мой интерфейс:

<!-- Modal Edit MAANDpicker-->
    <div class="modal fade" id="editMaandModal" tabindex="-1" role="dialog" aria-labelledby="editMaandModal"
    aria-hidden="true">
    <div class="modal-dialog" role="document">
        <div class="modal-content">
            <div class="modal-header">
                <h5 class="modal-title">Wijzig maand</h5>
                <button type="button" class="close" data-dismiss="modal" aria-label="Close">
                    <span aria-hidden="true">&times;</span>
                </button>
            </div>
            <div class="modal-body">
                <form action="{{ route('maandmenuMaandUpdate') }}" method="post">
                    @csrf


                    <label>Selecteer maand</label>
                    <select name="category_id" id="cat_id">

                    @php
                        $month = array("Januari", "Februari", "Maart", "April", "Mei", "Juni", "Juli", "Augustus", "September", "Oktober", "November", "December");
                        foreach($month as $maand){
                        echo "<option value='1' id='$maand'>$maand</option>";
                        }
                    @endphp

                    </select>
            </div>
            <div class="modal-footer">
                <button type="button" class="btn cancel-button" data-dismiss="modal">Sluit</button>
                <button type="submit" class="btn plus-button-modal">Wijzig maand</button>
            </div>
                </form>
        </div>
    </div>
</div>

Интернет. php

 Route::post('/maandmenu/updateMaand','MaandmenuController@updateMaand')->name('maandmenuMaandUpdate');

Функция в моем контроллере:

public function updateMaand(Request $request)
{
    $category = maandPicker::findOrFail($request->category_id);

    $category->update($request->all());

    return redirect()->back()->with('alert-success', 'Maand succesvol gewijzigd.');

}

Схема таблицы:

Schema::create('maand_pickers', function (Blueprint $table) {
        $table->id();
        $table->string('name');
        $table->timestamps();
    });

Но почему-то я не могу обновить свою базу данных, даже если страница этого не делает верните мне любые ошибки. Может кто-нибудь сказать мне, где я ошибся?

РЕШЕНИЕ:

                        <label>Selecteer maand</label>
                    @php
                    $months = array("Januari", "Februari", "Maart", "April", "Mei", "Juni", "Juli", "Augustus", "September", "Oktober", "November", "December");
                    @endphp

                    @foreach ($maandPicker as $maand)             
                    <input type="hidden" name="category_id" value="{{ $maand->id }}">
                    <select name="month">
                    @endforeach
                    @foreach ($months as $month)
                        <option value="{{ $month }}">{{ $month }}</option>
                    @endforeach
                    </select>

1 Ответ

0 голосов
/ 23 апреля 2020

Проблема в вашем коде заключается в том, что вы используете value=1 для всех элементов на ваш выбор. Вы можете заменить свой выбор следующим, и он будет работать:

@php
$months = array("Januari", "Februari", "Maart", "April", "Mei", "Juni", "Juli", "Augustus", "September", "Oktober", "November", "December");
@endphp

<input type="hidden" name="category_id" value="{{ $maandPicker->id }}">
<select name="month">
@foreach ($months as $month)
    <option value="{{ $month }}">{{ $month }}</option>
@endforeach
</select>

, а затем обработать ваше обновление:

public function updateMaand(Request $request)
{
    $category = maandPicker::findOrFail($request->category_id);
    $category->name = $request->month;
    $category->save();
    return redirect()->back()->with('alert-success', 'Maand succesvol gewijzigd.');
}

В примечании, я бы не стал использовать @php в шаблонах блейд-серверов и вместо этого отправляйте данные непосредственно из контроллера.

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