【问题标题】:laravel read a checkbox value in a controllerlaravel 读取控制器中的复选框值
【发布时间】:2014-08-15 17:52:14
【问题描述】:

这是我的html刀片代码

{{Form::checkbox('remember_me', '', array('id'=>'remember_id'))}}
        <label for="remember_id">Remember me</label>

这是我的控制器代码:

 echo Input::get('remember_me');exit;
  1. 结果总是空的,为什么?

  2. 当我运行页面时,复选框总是被选中,为什么?

谢谢

【问题讨论】:

    标签: php laravel laravel-4 blade


    【解决方案1】:

    请查看[Form::checkbox() 方法的参数列表][1]。

    第二个参数是您的复选框值。您手动将其设置为空字符串。将其设置为 null 以保持浏览器的默认值(laravel 默认值为 1)。第三个参数是一个布尔值。将其设置为 true 以选中该框,将其设置为 false 以取消选中它。

    第四个参数是您的选项数组,您可以在其中指定您的 id。所以正确的方法调用应该是:

    {{Form::checkbox('remember_me', null, false, array('id'=>'remember_id'))}} 
    

    更新:

    未选中的复选框不会包含在您的 POST 数据中。因此,验证复选框是否已被选中的唯一可靠方法是检查它是否已设置。这可以使用 isset() 和常规 PHP 函数来完成,或者如果正在使用 laravel,则可以使用 Input::has() 来完成,它会根据您的输入数据是否包含给定的键返回一个布尔值。

    【讨论】:

    • 应用代码时,复选框变为未选中状态,这很好,但控制器在未选中复选框时不打印任何内容,在选中复选框时打印null
    • 未选中的复选框将不会通过 POST 发送,这就是为什么您在未选中时会收到 null 并且您无法更改此行为的原因。这意味着您首先需要检查复选框是否有值,然后检查该值。 null 不应在您选中该框时打印。你确定你没有将null 放在字符串文字中吗?
    • 当我删除了围绕空值的字符串文字时,当复选框被选中时,我得到on,而在未选中时没有任何内容。所以你的意思是我只需要检查表单是否有复​​选框名称。否则,复选框不会被选中,对吧?
    • 对。正如我所说,未选中的复选框不会通过 POST 发送,因此它们的值为 null。您可以通过在控制器中使用 Input::has('remember_me') 来验证这一点。未选中复选框时应为 null,否则为 true
    【解决方案2】:

    您没有为复选框添加值

    {{Form::checkbox('remember_me', 'value goes here', true, array('id'=>'remember_id'))}}
    

    第二个参数是值

    【讨论】:

    • 我已经尝试将false 放在第二个值中,但仍然选中了复选框,并且控制器中没有打印任何内容
    • 编辑了我的答案,忘了第三个参数是选中状态,现在试试
    • 现在当未选中复选框时,控制器没有打印,并且检查复选框时,控制器打印value goes here。我需要的是true/falseon/of
    • 正常情况下,您只会从复选框中获取一个值,当它被选中时,并且它说“值在此处”我只是将其放在那里作为示例,将其替换为您的值.. .
    • +1 给你,我希望我能接受的不仅仅是回答。非常感谢您的努力
    【解决方案3】:

    通常我在没有刀片的情况下编写复选框,我可以随心所欲地使用它,就像普通的 HTML 一样。我不明白为什么你可以用普通的 HTML 方式来做,因为它总是做你擅长的事情。

    【讨论】:

    • +1 你的答案,我选择刀片而不是 html 因为我需要在页面被重定向时保存复选框值以防身份验证失败
    • 其实你可以用一个普通的复选框来做到这一点,blade 与它无关,其次,也没有冒犯,blade 为你生成一个复选框,它可以帮助你生成一个更干净的 html。跨度>
    【解决方案4】:
    {!! Form::label('Test-2') !!} {!! Form::checkbox('ch[]', 'value-2', false); !!} 
    

    【讨论】:

      猜你喜欢
      • 2020-10-18
      • 1970-01-01
      • 2019-02-20
      • 2018-12-15
      • 1970-01-01
      • 2016-09-14
      • 2021-12-18
      • 1970-01-01
      • 2021-05-15
      相关资源
      最近更新 更多