почему моя база данных не обновляется? (LARAVEL) - PullRequest
1 голос
/ 01 апреля 2020

моя база данных не обновляется, а когда я делаю

 dd(request()->has('validated'));

, это то, что мой веб. php выглядит так:

Route::patch('prof/theme/{id}/validated', 'Theme\ThemeController@valide')->name('prof.theme.validated');

это то, что мой ThemeController. php выглядит так:

public function valide(Theme $theme) {
        $theme->update([
            'validated' => request()->has('validated')
        ]);
       return back();

    }

это то, что мой show.blade. php выглядит так:

<form action="{{route('prof.theme.validated', $theme)}}" method="POST">
                        @csrf
                        @method('PATCH')
                             @if ($theme->validated)
                                <button type="submit" class="btn btn-danger text-center" style="width: 350px">
                                            INVALIDER LE THEME
                                </button>
                             @else
                                 <button type="submit" class="btn btn-success text-center" name="validated" id="validated" style="width: 350px">
                                                VALIDER LE THEME
                                 </button>
                             @endif
                         </form> 

этот код не показывает мне никакой ошибки, но он не выдает ожидаемое действие моя переменная "validated" - логическое значение

Ответы [ 3 ]

1 голос
/ 01 апреля 2020

спасибо Harshith VA !!!!! Я смог решить проблему благодаря вашей идее. Я сохранил ваше мнение и использовал вашу идею контроллера таким образом

public function valide(Request $request, Theme $theme) {

        $theme->validated = $request->has('validated');
        $theme->save();
       return back();

    }

спасибо вам за вашу помощь

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

Попробуйте использовать,

Контроллер

   public function update(Request $request, Theme $theme)

        $theme->validated = $request->has('validated');
        $theme->save();

        return back();
       }

Просмотр

 <form action="{{route('prof.theme.validated', $theme)}}" method="POST">
        @csrf
        @method('PATCH')
         @if ($theme->validated)
            <button type="submit" class="btn btn-danger text-center" style="width: 350px">
                        INVALIDER LE THEME
            </button>
         @else
             <input type="hidden" name="validated" value="true"> 
             <button type="submit" class="btn btn-success text-center" style="width: 350px">
                            VALIDER LE THEME
             </button>
         @endif
     </form>
0 голосов
/ 01 апреля 2020

На первый взгляд, я думаю, это связано с тем, что вы добавили name="validated" к <button>, а не как <input>.

<form action="{{route('prof.theme.validated', $theme)}}" method="POST">
    @csrf
    @method('PATCH')
     @if ($theme->validated)
        <button type="submit" class="btn btn-danger text-center" style="width: 350px">
                    INVALIDER LE THEME
        </button>
     @else
         <input type="hidden" name="validated" value="true"> 
         <button type="submit" class="btn btn-success text-center" style="width: 350px">
                        VALIDER LE THEME
         </button>
     @endif
 </form>

Здесь мы добавляем скрытое поле ввода с вводом validated. Это должно передать ключ / значение validated контроллеру.

Другой момент. dd() используется для d ie и дампа данных, и останавливает выполнение любого запущенного скрипта. Поэтому он не будет сохранен в БД, как только вы это сделаете.

Выше предполагается, что вы не имели в виду, что он не сохраняет в базу данных при dd().

Обновлении

Также обратите внимание, что ->has() проверяет, существует ли ввод. Вы должны использовать request('validated'), чтобы получить его значение.

...