首页 > 解决方案 > 切换复选框的输入字段中的@if条件 - Laravel

问题描述

我的刀片模板包含一个表单,可以在其中插入姓名、邮件等数据。一个输入字段是一个切换复选框,您可以在其中检查您是否是实习生。

该框的检查工作正常,但状态实习生或外部实习生未发送到数据库。贝娄,你会找到我的代码。我不知道这是否是正确的方法。

<input checked data-toggle="toggle" data-on="Yes" {{$person->intern_extern == '1' ? 'checked' : ''}}
data-off="No" {{$person->intern_extern == '0' ? 'checked' : ''}} data-onstyle="primary" 
data-offstyle="info" type="checkbox" 
name="intern_extern">

标签: laravelcheckboxinputtoggle

解决方案


正如与@N69S 讨论的那样,我会建议您使用需要更少代码的解决方案。

  1. 您在客户端的是/否等于服务器端的 1/0。
  2. 默认情况下,如果未选中,表单中的复选框不会发送到服务器端。

因此,使用请求在 Laravel 中的工作方式,您可以创建一个像这样的复选框:

<input name="intern_extern" type="checkbox" {{$person->intern_extern == 0 ? 'checked' : ''}}>

在您的控制器中,更新人物模型时,请执行以下操作:

$person->intern_extern = $request->input('intern_extern', 0);

这就是 N69S 对 $request->input() 的解释:

是的,默认情况下它为空,但您可以在恢复输入特征时设置它 InteractsWithInput @ public function input($key = null, $default = null)

在这种情况下,如果复选框 inter_person 被选中,表单将发布值为 true 的输入。如果未选中,则不会发送,值为 0。

如果您使用它来创建模型:$model = Model::create($request->all());,您必须在迁移中设置默认值$table->boolean('intern_extern')->default(0);才能使所有这些工作。

编辑 - 简单的建议

当我使用布尔值时,我喜欢将它们命名为“isSomething”。在您的情况下,isIntern 或 isExtern。因此,当您必须参考它时,阅读它很简单。isIntern(是或否)或 isExtern(是/否)。


推荐阅读