2014-06-25 108 views
0

读取一个复选框值。这是我的HTML刀片代码laravel在控制器

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

这是我控制器代码:

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

  2. 当我运行该页面时,该复选框始终会被选中,请问为什么?

感谢

回答

5

请有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(),它返回一个布尔值,取决于您的输入数据是否包含给定的键。

+0

在应用您的代码时,复选框变为未选中状态,这很好,但是当复选框未选中时,控制器不会打印任何内容,被检查 –

+1

未被选中的复选框将不会通过POST发送,这就是为什么当它没有被选中时你会得到'null',并且你不能改变这种行为。这意味着您首先需要检查复选框是否有值,然后检查值。 当您选中该框时,不应打印'null'。你确定你没有在字符串文字中加入null吗? – thpl

+0

当我删除了字符串文字arround null,我勾选了复选框时,并没有检查时没有任何东西。所以你的意思是我只需要检查表单是否有复​​选框名称。否则,复选框将不会被检查,对吧? –

1

你没有一个值添加到复选框

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

第二个参数是价值

+0

我已经试图把'FALSE'第二值,但仍复选框被选中,并没有在控制器 –

+0

印刷编辑我的回答,忘了第三个参数是选中状态,立刻尝试 –

+0

当该复选框未被选中时,控制器不打印任何内容,并且当该复选框被选中时,控制器打印“值在此处”。我需要的是'true/false'或'on/of' –

1

通常我会写入没有刀片的复选框,我可以随意使用它,就像普通的HTML一样。我不明白为什么你可以用普通的HTML方式来做到这一点,因为它总是以你熟练的方式做同样的事情。

+0

+1您的回答,我选择blade over html,因为我需要在页面重定向时保存复选框值,以防身份验证落入 –

+0

实际上,您可以执行此操作使用正常的复选框,刀片与此无关,第二,也没有进攻,刀片为您生成一个复选框,它可以帮助您生成更清晰的html。 –

0
{!! Form::label('Test-2') !!} {!! Form::checkbox('ch[]', 'value-2', false); !!}