Ошибка при получении установленного флажка в Laravel как логическое значение - PullRequest
0 голосов
/ 09 октября 2018

Я немного новичок в laravel, и я работаю над приложением laravel, которое имеет поле checkbox, которое должно иметь значение boolean 1, когда пользователь проверяет checkbox и 0, когда checkbox не отмечен.

Я хочу получить логическое значение как 1 или 0 и сохранить его в БД.

Пожалуйста, помогите?

Вид

<form method="POST" action="{{ route('b2c.getplans') }}" id="travel_form"  accept-charset="UTF-8">

    <input type="hidden" name="_token" value="{{ csrf_token() }}">
    <div class="check-now {{ $errors->has('spouse') ? ' has-error' : '' }}">
        <h1 class="cover-travel">I am travelling with</h1>
        <label class="spouse-me">
            <h1 class="pumba">Spouse</h1>
            <input id="spouse" type="checkbox" name="spouse">
            <span class="checkmark" name="spouse"></span>
        </label>
        @if ($errors->has('spouse'))
            <span class="help-block">
                <strong>{{ $errors->first('spouse') }}</strong>
            </span>
        @endif
    </div>

    <button type="submit" class="form-b3c"> Get Plans</button>
</form>

Контроллер

 public
    function validatePlanEntries(Request $request)
    {

        $validation = $this->validate($request, [
            'WithSpouse' => (\Input::has('spouse')) ? 1 : 0;
        ]
}

Ответы [ 3 ]

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

Чтобы извлечь значение флажка из запроса как логическое значение:

$yourModel->with_spouse = (bool) $request->spouse;

Если флажок установлен, то его значение (on по умолчанию) будет передано в запрос, и приведение непустой строки в логическое значение дастВы true.Если флажок не установлен, то ключ spouse вообще не будет передан для запроса, поэтому $request->spouse вернет null.Приведение null в логическое значение приведет к false (в PHP true это int 1, а false это int 0, что именно то, что вам нужно).

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

1-й способ - отправка правильного значения со стороны внешнего интерфейса

Вы можете добавить jquery или javascript на стороне внешнего интерфейса при изменении события флажка:

<input type="checkbox" name="checkbox" id="myCheckbox" />

<script>
$(document).on('change','#myCheckbox',function(){
    if($(this).is(':checked')){
       $('#myCheckbox').val(1);
    }else{
       $('#myCheckbox').val(0);
    }
});
</script>

на вашембэкэнд, теперь вы можете проверить:

 $yourVariable=$request->input('checkbox');

2-й способ - это проверка только у вашего бэкэнда

вы получите checkbox value=on, если он проверил

if($request->input('checkbox')=='on'){
   $yourVariable=1;
}else{
   $yourVariable=0;
  }

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

$yourVariable = $request->input('checkbox')=='on' ? 1:0;
0 голосов
/ 09 октября 2018

Вам не нужно проверять значение флажка.потому что если checked отправляет значение on, а если не checked, то ничего не отправляет.

Итак, все, что вам нужно, это получить, установлен ли флажок илинет, вы можете сделать следующее.

для получения логического значения флажка,

Контроллер

// since you haven't provide any codes in the controller what
// are you gonna do with this value,
// I will juts catch it to a variable.

$isChecked = $request->spouse == 'on'
...