【问题标题】:Single Checkbox Form Laravel 5.5单个复选框表单 Laravel 5.5
【发布时间】:2018-01-08 17:53:49
【问题描述】:

我正在开发一个用户可以单击复选框的网页;任何用户都可以点击复选框,所有用户查看的结果都是一样的。因此,如果用户 A 选中该框,用户 B 将看到它已选中。如果用户 B 然后取消选中它,用户 A 将看到它未选中。

我可以让复选框显示数据库中的值,但是当用户单击复选框时,我似乎无法在数据库中更改和更新值。

我的刀片布局如下所示:

<form method="POST" action="{{ action('QuestionController@answered', $question->id) }}"  role="form">
     {{ csrf_field() }}
     <input type="checkbox" id="answered" name="answered" value="0" @if($question->answered == 1) checked @endif> Answered
</form>

我的控制器中的函数如下所示:

public function answered(Request $request, $id)
    {

        $request->request->add(['answered_userid' => $this->userId]);
        $this->validate($request, [
             'answered' => 'required',
             'answered_userid' => 'required'

        ]);
        Question::find($id)->update($request->all());
    }
}

而且,在我的路线文件中,我有这个:

Route::post('questions/answered', ['as' => 'questions.answered', 'uses' => 'QuestionController@answered']);

编辑:我已经更新它以包含名称,但我仍然遇到同样的问题。

【问题讨论】:

  • 复选框没有name 属性,因此它的值不会被发送。
  • @Miha_x64 我添加了它并没有改变任何东西。

标签: laravel laravel-5.5


【解决方案1】:

您必须在输入中设置名称。请求会使用输入的name作为参数:

<input type="checkbox" name="answered" id="answered" value="0" @if($question->answered == 1) checked @endif> 

【讨论】:

  • 我添加了名称,但得到相同的结果。
  • 勾选时设置。如果未选中,则不会出现在请求中。
  • 你到底是什么意思?
  • 我的意思是,如果用户选中复选框,控制器中的请求将具有“已回答”作为带有复选框值的参数。如果用户取消选中该复选框,则请求将没有“已回答”作为元素。尝试这两种状态并检查是否发生这种情况。
  • 无论我是尝试取消选中还是选中该框,都不会改变。
【解决方案2】:

设置名称及其值

<input type="checkbox" name='answered' {{$question->answred ==1 ? Value="1" checked : value="0"}}>

【讨论】:

    猜你喜欢
    • 2017-03-15
    • 2017-04-05
    • 1970-01-01
    • 2018-06-05
    • 2018-06-30
    • 2015-10-29
    • 2015-10-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多