【问题标题】:Laravel checkbox is not submitted to controllerLaravel 复选框未提交给控制器
【发布时间】:2016-11-20 08:14:54
【问题描述】:

我在这样的视图中有一个简单的表单:

<form action="{{ URL::route('admin.x') }}" method="POST">
    <input type="text" value="b" name="title" />
    <input type="text" value="c" name="type" />
    <input type="text" value="d" name="postfix" />
    <input type="checkbox" name="check" value="ss" />
    <input type="hidden" name="_token" value="{{ csrf_token() }}">
</form>

我用过

dd(Input::all());

用于检查从视图发布到控制器的所有值。结果如下所示,我想知道如何使用表单发布复选框值。

数组:4 [▼

"标题" => ""

"类型" => ""

"后缀" => ""

"_token" => "kSM3pO11KOOWQcCx4PeWcbi4r4AsFx0rSGQoVFtG"

]

【问题讨论】:

    标签: php laravel checkbox input


    【解决方案1】:

    您可以通过在复选框字段上方创建一个具有相同名称的隐藏输入字段来确保您的服务器端接收到复选框的值,无论它是否被选中。

    这样,如果提交表单时未选中复选框,则服务器端将从隐藏的输入字段接收值,而如果选中复选框,服务器将收到选中的值,因为该字段在表格。

    <input type="hidden" name="checkbox" value="0"/> <input type="checkbox" name="checkbox" value="ss"/>

    【讨论】:

      【解决方案2】:

      如果用户或客户端脚本未检查复选框输入,则不会将其提交给服务器端脚本。因此,在这些情况下,输入不会发送到您的控制器

      在 laravel 中,如果您想以某种方式“规范化”输入未发送的情况,您可以自己创建一个字段:

      $data = Input::all();
      
      if ( ! isset($data['check']) )
          $data['check'] = false; 
      

      【讨论】:

      • 你的意思是如果复选框被用户选中,它将出现在 dd(Input::all()) 结果中?
      • 是的,如果您选中复选框,您将在示例中看到:"check" =&gt; "ss" 因为ss 是您分配给该输入的值
      • 但这并没有像你说的那样发生。
      • @MahmoodKohansal : 当您选中复选框时,dd(Input::all()); 的结果是什么?
      • 谢谢,它对我有用......只是一件小事...... if 语句后缺少一个“)”
      【解决方案3】:

      如果选中复选框,则返回 true,否则返回 false。

      Input:has('check')
      

      【讨论】:

      • 查不查没区别!也许有什么问题,但它还是让我觉得是假的。
      猜你喜欢
      • 2019-09-13
      • 1970-01-01
      • 2018-01-16
      • 2018-12-15
      • 1970-01-01
      • 2019-02-20
      • 2020-03-05
      • 1970-01-01
      • 2016-01-31
      相关资源
      最近更新 更多