Неправильное значение для формы в Laravel - PullRequest
1 голос
/ 05 июля 2019

У меня есть функция конфиденциальности. Если public = 1, сообщение является общедоступным, в противном случае, если 0, сообщение является личным. У меня есть этот переключатель:

<label class="toggle" style="right: 185px">{{ Form::checkbox('public') }}<i class="no-rounded privancy"></i></label>

Тумблер по умолчанию установлен на общедоступный, но при отправке в базу данных я получаю NULL в столбце public. Если я нажимаю кнопку на частном, в базе данных я получаю 1, и 1 для публичного. Как это работает? Как я могу заставить это работать, потому что мне это нужно.

Ответы [ 2 ]

0 голосов
/ 05 июля 2019
<?php
$public = 0; // set default value as `0` indicating post is not public
if(isset($_POST['public'])) {
   $public = 1; // if the public checkbox is checked while sumitting the form then set value as `1`
}

Используйте значение $public для сохранения / обновления в базе данных.

0 голосов
/ 05 июля 2019

Если вы посмотрите на код, который генерирует флажок, вы увидите, что он может принимать до 4 аргументов, третий из которых - проверен ли он по умолчанию или нет, и каково значение.Значение равно 1 по умолчанию.Поэтому, когда вы проверите его, он вернет 1.

public static function checkbox($name, $value = 1, $checked = null, $options = array())
{
    return \Collective\Html\FormBuilder::checkbox($name, $value, $checked, $options);
}

Просто измените вашу форму на значение 2, чтобы вернуть 2 при проверке.

Form::checkbox('public', 2)

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...