Laravel: редактировать данные на той же странице, на которой они отображаются

Я хочу внести изменения в пользовательские данные на той же странице, на которой они отображались. По сути, я хочу выбрать проверенный или отклоненный, нажать кнопку отправки, и страница обновится с изменением. Итак, у меня есть этот код:

<table class = "table table-striped">
    <thead>
    <tr>
        <th scope = "col">#</th>
        <th scope = "col">Name</th>
        <th scope = "col">Receipt</th>
        <th scope = "col">Status</th>
        <th scope = "col"></th>
    </tr>
    </thead>
    <tbody>
    @foreach($users as $user)
        <tr>
            <form method='POST' action = "{{ action('PaymentController@update' , $user->id )}}"
                  enctype = "multipart/form-data">
                @csrf
                @method('PUT')
                <th scope = "row">{{$user->id}}</th>
                <td>{{$user->name}}</td>
                <td>
                    <a href = "/{{$user->receipt}}">{{$user->receipt}}</a>
                </td>
                @if ( $user->payment_status != NULL )
                    <td>
                        PAYMENT VERIFIED
                    </td>
                @else
                    <td>
                        <div class = "form-group">
                            <select multiple class = "form-control-sm" id = "exampleFormControlSelect2" name = "nsap_reg"
                                    required = "">
                                <option value = "verified">Verified</option>
                                <option value = "NULL">Rejected</option>
                            </select>
                        </div>
                    </td>
                @endif
                <td>
                    <input type = "submit" value = "SUBMIT">
                </td>
            </form>
        </tr>
    @endforeach
    </tbody>
</table>

Контроллер:

public function update(Request $request, $id)
{
    $request->validate([
        'nsap_reg' => 'required',
    ]);

    $payment_status = \App\User::find($id);

    ['nsap_reg' => $request->nsap_reg];

    $payment_status->save();
    return redirect('user-status');
}

Моя проблема в том, что при нажатии кнопки «Отправить» ничего не происходит, страница просто обновляется. Любая помощь будет оценена по достоинству.

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout
Laravel Scout - это популярный пакет, который предоставляет простой и удобный способ добавить полнотекстовый поиск в ваше приложение Laravel. Он...
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
0
0
385
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Как я вижу, вы создали список выбора с множественным выбором, и когда вы сохраняете данные в базу данных, вы отправляете данные массива для сохранения. Но вам нужно сначала преобразовать это в json, а затем установить для сохранения.

Ниже приведен пример сохранения nsap_reg с множественным выбором.

<?php

public function update(Request $request, $id)
{
    $request->validate([
        'nsap_reg.*' => 'required',
    ]);

    $payment_status = \App\User::find($id);

    $payment_status->nsap_reg = json_encode($request->input('nsap_reg'));

    $payment_status->save();
    return redirect('user-status');
}

Но если вы используете одиночный выбор, удалите атрибут multiple из списка выбора, а затем используйте этот код.

<?php

public function update(Request $request, $id)
{
    $request->validate([
        'nsap_reg' => 'required',
    ]);

    $payment_status = \App\User::find($id);

    $payment_status->nsap_reg = $request->input('nsap_reg');

    $payment_status->save();
    return redirect('user-status');
}

Вам просто нужно установить значение nsap_reg для пользовательского объекта и сохранить его.

$payment_status = \App\User::find($id); $payment_status->nsap_reg = $request->nsap_reg; $payment_status->save();

Другие вопросы по теме