Laravel: редактировать данные на той же странице, на которой они отображаются - PullRequest
0 голосов
/ 10 октября 2018

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

<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');
}

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

Ответы [ 2 ]

0 голосов
/ 10 октября 2018

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

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

0 голосов
/ 10 октября 2018

Как я вижу, вы создали список выбора с множественным выбором, и когда вы сохраняете данные в базу данных, вы отправляете данные массива для сохранения.Но вы должны сначала преобразовать это в 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');
}
...