Значение флажка не сохраняется в базе данных в laravel - PullRequest
0 голосов
/ 30 сентября 2018

Я пытаюсь сохранить значение своего флажка, если значение выбора флажка будет равно 1, в противном случае оно будет равно 0.

Но я не знаю, где я ошибаюсь, значение не сохраняется в моей базе данных, пожалуйста, посмотрите вмоя форма.

моя форма:

                <form id="preferences_form" role="form" method="POST" novalidate action="{{ url('/preference') }}" class="mujucet-registration">
                            <h5>Nastavení zpráv</h5>
                            <div class="row">
                                <div class="col-md-4">
                                    <div class="checkbox">
                                        <label  for="ch1">
                                            <input type="checkbox" name="monthly" id="ch1"><span class="cr"><i class="cr-icon fa fa-check"></i></span>Měsíční výpisy
                                        </label>
                                    </div>
                                </div>
                                <div class="col-md-4">
                                    <div class="checkbox">
                                        <label >
                                            <input type="checkbox" name="weekly"><span class="cr"><i class="cr-icon fa fa-check"></i></span>Týdenní přehled
                                        </label>
                                    </div>
                                </div>
                                <div class="col-md-4">
                                    <div class="checkbox">
                                        <label>
                                            <input type="checkbox" name="tax_reviews"><span class="cr"><i class="cr-icon fa fa-check"></i></span>Daňové výpisy
                                        </label>
                                    </div>
                                </div>

                                <div class="col-md-4">
                                    <div class="checkbox">
                                        <label>
                                            <input type="checkbox" name="quarterly"><span class="cr"><i class="cr-icon fa fa-check"></i></span>Čtvrtletní výpisy
                                        </label>
                                    </div>
                                </div>
                                <div class="col-md-4">
                                    <div class="checkbox">
                                        <label>
                                            <input type="checkbox" name="annually"><span class="cr"><i class="cr-icon fa fa-check"></i></span>Roční výpisy
                                        </label>
                                    </div>
                                </div>
                                <div class="col-md-4">
                                    <div class="checkbox">
                                        <label>
                                            <input type="checkbox" name="newsletter"><span class="cr"><i class="cr-icon fa fa-check"></i></span>Novinky
                                        </label>
                                    </div>
                                </div>

                                <div class="col-md-12">
                                    <div class="checkbox">
                                        <label class="border">
                                            <input type="checkbox" name="direct_mail_reviews"><span class="cr"><i class="cr-icon fa fa-check"></i></span> Chci výpisy zasílat také Poštou <span class="light">20 kč za výpis</span>
                                        </label>
                                    </div>
                                </div>

                            </div><h5>Kontaktní preference</h5>
                            <div class="row">
                                <div class="col-md-4">
                                    <div class="checkbox">
                                        <label>
                                            <input type="checkbox" name="email"><span class="cr"><i class="cr-icon fa fa-check"></i></span>Email
                                        </label>
                                    </div>
                                </div>
                                <div class="col-md-4">
                                    <div class="checkbox">
                                        <label>
                                            <input type="checkbox" name="sms"><span class="cr"><i class="cr-icon fa fa-check"></i></span>SMS
                                        </label>
                                    </div>
                                </div>
                            </div>
                        </form>

действие моего контроллера, где я сохраняю свои значения:

public function preferences(Request $request)
{
    $user = Auth::guard()->user();

    $preferences = new Preference();

    $preferences->userID = $user;
    $preferences->monthly = Input::get('monthly')? 1 : 0;
    $preferences->weekly = Input::get('weekly')? 1 : 0;
    $preferences->tax_reviews = Input::get('tax_reviews')? 1 : 0;
    $preferences->quarterly = Input::get('quarterly')? 1 : 0;
    $preferences->quarterly = Input::get('quarterly')? 1 : 0;
    $preferences->annually = Input::get('annually')? 1 : 0;
    $preferences->newsletter = Input::get('newsletter')? 1 : 0;
    $preferences->direct_mail_reviews = Input::get('direct_mail_reviews')? 1 : 0;
    $preferences->email = Input::get('email')? 1 : 0;
    $preferences->sms = Input::get('sms')? 1 : 0;
    $preferences->save();

    return back();

}

Я использую код JavaScript для сохранения значений с помощью кнопки:

submitForms = function(){
  document.getElementById("preferences_form").submit();
}

И моя модель:

class Preference extends Model
   {
protected $table = 'db_preferences';
protected $fillable = ['userID','monthly','weekly','tax_reviews','quarterly','annually','newsletter','direct_mail_reviews','email','sms'];
   }

Пожалуйста, сообщите мне, где я ошибаюсь, ваша помощь будет высоко оценена.Заранее спасибо

Ответы [ 2 ]

0 голосов
/ 30 сентября 2018
  • Добавить атрибут value во все поля ввода (независимо от типа поля).Потому что это безопасно.
  • Не используйте int для хранения 1/0 в базе данных.Потому что это тратит лишнюю память.Используйте tinyInt.

Если вы используете tinyInt, этот код может вам помочь.

`$preferences->monthly = $request->has('monthly');
 $preferences->weekly = $request->has('weekly');`
0 голосов
/ 30 сентября 2018

Вы можете проверить, установлен ли флажок или нет, как показано ниже.

$preferences->monthly = Input::get('monthly') == 'on' ? 1 : 0;

более упрощенный код

$preferences->monthly = Input::get('monthly') == 'on' ?;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...