Moja baza danych nie aktualizuje się, kiedy to robię

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

Tak wygląda mój web.php:

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

Tak wygląda mój ThemeController.php:

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

    }

Tak wygląda mój 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> 

Ten kod nie pokazuje mi żadnego błędu, ale nie daje oczekiwanego działania. moja zmienna „zweryfikowana” jest wartością logiczną

1
lilwil13 1 kwiecień 2020, 12:14

3 odpowiedzi

Najlepsza odpowiedź

Dziękuję Harshith VA !!!!! udało mi się rozwiązać problem dzięki Twojemu pomysłowi. Zachowałem twój widok i w ten sposób wykorzystałem twój pomysł na kontroler

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

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

    }

Dziękuję za Twoją pomoc

1
lilwil13 1 kwiecień 2020, 15:46

Na pierwszy rzut oka wydaje mi się, że wynika to z faktu, że dodałeś name="validated" do <button>, a nie jako <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>

Tutaj dodajemy ukryte pole wejściowe z wejściem validated. W ten sposób należy przekazać klucz / wartość validated do kontrolera.

Kolejny punkt. dd() służy do umierania i zrzucania danych oraz zatrzymania wykonywania każdego uruchomionego skryptu. Dlatego po wykonaniu tej czynności nie zostanie zapisany w bazie danych.

Powyższe zakłada, że nie oznacza to, że nie zapisuje się do bazy danych, kiedy dd().

Aktualizacja

Zauważ również, że ->has() sprawdza, czy dane wejściowe istnieją. Powinieneś użyć request('validated'), aby uzyskać jego wartość.

0
Community 20 czerwiec 2020, 09:12