【问题标题】:PHP / Laravel 4 echo checkbox value from database stored as booleanPHP / Laravel 4回显数据库中的复选框值存储为布尔值
【发布时间】:2014-10-29 15:07:29
【问题描述】:

我有几个复选框存储为 0 表示未选中或 1 表示选中为布尔值。

我现在正在尝试使用 laravel 回显这些值,例如

echo $request->facebook

返回 1 或 0。它不返回“facebook”的值。

在我看来,我有:

<input type="checkbox" value="facebook" name="facebook" class="css-checkbox" />

在我的模型中,我有这个:

$request->facebook = Input::has('facebook');
$request->save();

模型将检查表单中的复选框 facebook 并将布尔值保存在数据库中。

如果复选框被选中,则回显“facebook”的最佳方式是什么?如果复选框未被选中,则什么都不回显?

【问题讨论】:

  • 如果复选框被选中,您想回显字符串“facebook”吗?

标签: php html laravel laravel-4


【解决方案1】:

这就是我为控制器中的复选框所做的:

$object = new MyObject;

$object->facebook = Input::has('facebook') ? 1 : 0;
$object->twitter = Input::has('twitter') ? 1 : 0;
$object->somethingElse = Input::has('someCheckbox') ? 1 : 0;

$object->save();

可能有更好的方法来做到这一点,但这是我通常会做的。它易于阅读和理解,并使您的代码井井有条。

我已经尝试使用 mutators 将这样的东西移动到模型中,但我有点不确定在模型上使用 Input 类。在您的控制器 POST 方法中,Input 类将始终存在。总会有Input 可供检查和使用。但是在某些随机模型方法上,您可能有一天会在 POST 请求之外访问该方法,然后没有 post 输入,因此 Input::has() 之类的东西将返回 false 并将这些值设置为零。

可能有更优雅的方式来做到这一点。我不确定是什么。

【讨论】:

  • 真的只是在寻找最简单的方法来做到这一点,因为我有很多复选框!这意味着我需要大量的 IF 语句。那是我的问题。当您想回显实际值时,布尔值是复选框的正确方法吗?
  • 我明白你的意思,让我修改答案。
  • 您问的是如何根据复选框设置属性的值,对吧?你能修改你的问题吗?
  • 您必须更具体地回答您的问题。如果选中该复选框,您听起来就像您希望字符串“facebook”被回显。你想让它在哪里回响?在表单提交期间?还是在视野中?
猜你喜欢
  • 2015-12-12
  • 1970-01-01
  • 1970-01-01
  • 2019-02-26
  • 2020-03-15
  • 1970-01-01
  • 1970-01-01
  • 2012-05-25
  • 2021-08-23
相关资源
最近更新 更多