【问题标题】:Laravel checkobx in build form doesn't update value构建表单中的 Laravel 复选框不会更新值
【发布时间】:2016-04-22 17:21:01
【问题描述】:

在 Laravel 中,我使用的是表单生成器。我的表单与创建和更新帖子相同。在该表单中,我创建了用于在帖子中启用/禁用 cmets 的复选框。默认值为 1(选中)。当我创建新帖子时,复选框工作正常。此外,当我加载编辑页面时,如果在数据库中启用评论,页面加载复选框,如果在帖子中禁用 cmets 页面加载未选中框。问题是当我想编辑和更改它并更新帖子时。启用 cmets 值不变。没有任何错误,并且来自其他表单字段的更改值被正确存储。列名是 enable_cmets - boolean 类型,这是我的表单生成器输入字段代码:

{!! Form::label('enable_comments') !!}
{!! Form::checkbox('enable_comments', $post->exists ? $post->enable_comments : 1, !$post->exists ? true : $post->enable_comments) !!}

请注意,创建帖子时一切正常。如果选中复选框,则在数据库中存储 1,如果不是,则存储 0。此外,它在编辑页面上显示正确。如果数据库中的“enable_cmets”值为1,则在编辑页面上选中,如果为0,则不选中复选框。

请帮忙。我哪里做错了?这个逻辑哪里出了问题?

【问题讨论】:

  • 我明白,如果帖子存在,第三个参数是 1 或 0,但我需要 true 或 false。

标签: php forms laravel checkbox builder


【解决方案1】:

仅当您取消选中该框时才会发生这种情况?当它未选中时,它不会发回一个值。将以下行添加到 Request 类将默认该值,因此它每次都存在,无论是否选中

public function rules()
{
    $this->merge(['enable_comments' => $this->input('enable_comments', 0),]);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-01
    • 1970-01-01
    相关资源
    最近更新 更多