Laravel - uzupełnienie checkboxów przy edycji

0

Cześć, w jaki sposób mogę zaznaczać checkboxy który były wybrane podczas dodawania rekordu?

Dokładnie chodzi o coś takiego, mamy coś w rodzaju posta a do tego tagi. Taki pobierane są z osobnej tabeli i wyświetlane jako lista checkboxów. Podczas dodawania zaznaczam kilka checkboxów z listy i ich dane trafiają do bazy. Teraz podczas edycji znów jest wyświetlana ta sama lista jednak chciałbym aby checkboxy wybrane podczas dodawania były teraz zaznaczone, jak mogę to zrealizować?

Dzięki.

0

Zależy jak przechowujesz te tagi (checkboxy w bazie).

  1. przechowujesz tylko te zaznaczone
    wtedy w pętli dopisujesz przy generowaniu każdego elementu atrybut checked

  2. Przechowujesz jako int - 1 jako zaznaczone, 0 jako niezaznaczony
    wtedy w pętli dopisujesz przy generowaniu coś takiego
    <input type="checkbox" name="name" <?php echo (TABLE.VALUE === 1) ? 'checked' : '' ;?> />

  3. Przechowujesz jako varchar (string) - np Tak jako zaznaczone, NIE jako nie zaznaczone
    <input type="checkbox" name="name" <?php echo (TABLE.VALUE === "Tak") ? 'checked' : '' ;?> />

0

Przechowuje id tagów w osobnej tabeli gdzie mam post_id i tag_id i przy pobieraniu zwracam listę tych id z relacji, więc opcja 1, przechowuje tylko te zaznaczone. Tylko jak mam dopisać atrybut checked dokładnie? Bo jedna tablica to wszystkie tagi a druga to tagi zaznaczone

0

Opcji jest pewnie wiele. Mi na szybko do głowy wpadło np takie coś:
// pisane z palca mogą być błędy składniowe - ogólnie opiera się to na funkcji in_array()
https://www.php.net/manual/en/function.in-array.php

foreach($WSZYSTKIE_TAGI as $CURRENT_TAG){
   if(in_array($CURRENT_TAG, $WSZYSTKIE_ZAZNACZONE_TAGI)){
     echo "<input type="checkbox" name="name" checked />";
   }else{
     echo "<input type="checkbox" name="name" />";
   }
}
0

Robisz to jako profesjonalista najpierw instalujesz

composer require laravelcollective/html

Potem w formularzu dajesz

{{ Form::hidden('field_name', 0) }}
{{ Form::checkbox('field_name', 1, ($user->field_name) ? ['checked'] : null, ['class' => 'form-check-input', 'id' => 'field_name']) }}

Czyli jeśli nie masz zaznaczonego checkboxa to wartośc przyjmie sie 0
Jeśli field)name będzie w bazie zaznaczone i wybierasz np dane uzytkownika to linia ($user->field_name) ? ['checked'] : null ci go zaznaczy. Nie mieszaj html z kodem w postaci jakiej podali ci przyklady wyżej bo tylko syf sie nawnosi.

Oczywiscie powinienes wszystkie formularze tak zmienic na Form::open() Form::text Form::select its, itd,

1 użytkowników online, w tym zalogowanych: 0, gości: 1