Laravel刀片复选框

lgg*_*gg3 13 php checkbox laravel laravel-blade

我想从数据库设置复选框状态,所以我写,

{{ Form::checkbox('asap', null, $offer->asap) }}
Run Code Online (Sandbox Code Playgroud)

但是如果我想将id设置为复选框之类的话

{{ Form::checkbox('asap', null, $offer->ASAP, array('id'=>'asap')) }}
Run Code Online (Sandbox Code Playgroud)

它始终将我的复选框状态设置为true.(在用户选择之前)

那么问一下在用户选择它之前如何设置复选框状态,如何在刀片复选框中设置ID?

Moh*_*iri 33

我知道之前已回答过这个问题,在这一步中,我将逐步解释如何使用不同情况的Laravel /刀片实现复选框...

因此,为了从数据库加载复选框或测试是否选中了复选框:

首先,你需要了解它是如何工作的,正如@itachi所提到的:

{{Form :: checkbox(第一个参数,第二个参数,第三个参数,第四个参数)}}

  • 第一个论点:名字
  • 第二个论点:价值
  • 第三个参数:选中或未选中此选项:truefalse
  • 第四个参数:附加属性(例如,复选框css classe)

示例:

{{ Form::checkbox('admin') }} 
//will produces the following HTML
<input name="admin" type="checkbox" value="1">

{{ Form::checkbox('admin', 'yes', true) }}
//will produces the following HTML
<input checked="checked" name="admin" type="checkbox" value="yes">
Run Code Online (Sandbox Code Playgroud)

如何获取复选框值?(在您的控制器中)

方法1:

public function store(UserCreateRequest $request)
{

   $my_checkbox_value = $request['admin'];

  if($my_checkbox_value === 'yes')
     //checked
  else
     //unchecked
  ...
}
Run Code Online (Sandbox Code Playgroud)

方法2:

if (Input::get('admin') === 'yes') {
    // checked
} else {
    // unchecked
}
Run Code Online (Sandbox Code Playgroud)

注意:您需要为未选中的框指定默认值:

if(!$request->has('admin'))
{
    $request->merge(['admin' => 0]);
}
Run Code Online (Sandbox Code Playgroud)

这样很好吗?但是我们如何在视图中设置复选框?

为了良好的实践,我建议Form::model在创建表单时使用,这将自动填充与模型具有相同名称的输入值(以及使用不同的刀片Form :: inputs ..)

{!! Form::model( $user, ['route' => ['user.update', $user->id], 'method' => 'put' ]) !!}
    {!! Form::checkbox('admin', 1, null) !!}
{!! Form::close() !!}
Run Code Online (Sandbox Code Playgroud)

你也可以这样得到它:

{{ Form::checkbox('admin',null, $user->admin) }}
Run Code Online (Sandbox Code Playgroud)

Okey现在该如何处理:

  • 倍数复选框
  • 添加css classe
  • 添加复选框ID
  • 添加标签

假设我们希望从数据库中获取工作日 工作日

$working_days = array( 0 => 'Mon', 1 => 'Tue', 2 => 'Wed', 
                       3 => 'Thu', 4 => 'Fri', 5 => 'Sat', 6 => 'Sun' );

@foreach ( $working_days as $i => $working_day )
{!! Form::checkbox( 'working_days[]', 
                  $working_day,
                  !in_array($working_days[$i],$saved_working_days),
                  ['class' => 'md-check', 'id' => $working_day] 
                  ) !!}
{!! Form::label($working_day,  $working_day) !!}
@endforeach
//$saved_working_days is an array of days (have 7 days, checked & unchecked)
Run Code Online (Sandbox Code Playgroud)

我花了一些时间来弄清楚如何处理多个复选框我希望这可以帮助别人:)


Mar*_*łek 7

第3个参数决定是否选中复选框.所以可能$offer->ASAP(或者$offer->asap是真的(或者不是假或不为空).如果要取消选中复选框,请将其设置为false,或者不要使用第3个参数(设置为null或false):

{{ Form::checkbox('asap',null,null, array('id'=>'asap')) }}
Run Code Online (Sandbox Code Playgroud)

编辑

另一种可能性是,您的页面上有一些自定义JavaScript代码,可以按asapID 查找元素并选中此复选框.因此,当您未设置ID时,JavaScript无法检查它,但是当您设置此ID时,JavaScript将检查该复选框.