dongli4274
2019-07-05 13:00 阅读 35
已采纳

laravel形式的错误价值

I have a privacy function.If public = 1, the post is public, else if is 0, the post is private.I have this toggle :

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

The toggle is set on public by default, but at submit, in database I receive NULL in column public. If I press the button on private, in database I Receive 1, and 1 is for PUBLIC. How it's working?How can I make this working because I need this.

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享

2条回答 默认 最新

  • 已采纳
    dsyk33753 dsyk33753 2019-07-05 13:06

    If you look at code that generates the checkbox, you'll see it can take up to 4 arguments, the third being whether or not it is checked by default, and what the value is. The value is 1 by default. So when you check it, it will return 1.

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

    Just change your form to value of 2 to return 2 when checked.

    Form::checkbox('public', 2)
    

    And as pointed out in your comments, an unchecked checkbox will not be submitted so you will have to check in the controller when you save.

    点赞 评论 复制链接分享
  • doulou0882 doulou0882 2019-07-05 13:06
    <?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`
    }
    

    Use the $public value to store/update in the database.

    点赞 评论 复制链接分享

相关推荐