此代码使用html、php和laravel。无论我做什么,第一个"tk"的值都不会改变。第二个"ntk"的值确实会改变,但最终我在网页上的输出会出于某种原因让我选中复选框。真的希望有人能帮我,因为我真的不知道这怎么可能。尤其是当我在$ntk中输入false时,复选框会保持未选中状态。
这是我的表格:
<?php
$tk = Session::has('tk') ? Session::get('tk') : 1;
var_dump($tk);
if($tk == 1){
$tk = 'true';
} else {
$tk = 'false';
}
$tk_name = 'tk: ';
var_dump($tk_name);
var_dump($tk);
$ntk = Session::has('ntk') ? Session::get('ntk') : 0;
var_dump($ntk);
if($ntk == 1){
$ntk = 'true';
} else {
$ntk = 'false';
}
$ntk_name = 'ntk: ';
var_dump($ntk_name);
var_dump($ntk);
?>
{{ Form::open(array('url' => 'aanvullen')) }}
<table>
<tr>
<td>
{{ Form::submit('Toepassen') }}
</td>
<td>
{{ Form::checkbox('tk', 1, $tk) }} Tijdkritisch (TK) <br>
{{ Form::checkbox('ntk', 1, $ntk) }} Niet-tijdkritisch (NTK)
<td>
</tr>
</table>
{{ Form::close() }}
这是我的控制器代码:
if(isset($_POST['tk']) )
{
$tk = $_POST['tk'];
Session::put('tk', $tk);
} else {
$tk = 1;
Session::put('tk', $tk);
}
if(isset($_POST['ntk']) )
{
$ntk = $_POST['ntk'];
Session::put('ntk', $ntk);
} else {
$ntk = 0;
Session::put('ntk', $ntk);
}
您使用的是:
if($tk == 1){
$tk = 'true';
} else {
$tk = 'false';
}
在这种情况下,$tk
总是真的,因为true
是String
,而不是Boolean
值;当您使用$tk
作为Boolean
值时,它会变成true
,因为它是truthy
值,例如:
$tk = 'false';
echo !!$tk; // 1 = true
无论如何,这就是问题所在,您的$tk
包含一个字符串而不是Boolean
,分配Boolean
值的正确方法是:
$k = TRUE; / without qoutes
但您不必像这样将TRUE
或FALSE
分配给$tk
:
enter code hereif($tk == 1){
$tk = true;
} else {
$tk = false;
}
由于0
是falsy
的值,计算结果为FALSE
,1
的值计算结果为TRUE
,因此您可以直接使用$tk
,如下所示:
{{ Form::checkbox('tk', 1, $tk) }}
根据$tk
的值(1
或0
),它可以是:
{{ Form::checkbox('tk', 1, 1) }} // Checked
{{ Form::checkbox('tk', 1, 0) }} // Unchecked
因此,如果$tk
包含1
,则checkbox
将是checked
,而如果0
,则它将不是checked
。