此代码使用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);
}
答案 0 :(得分:1)
你正在使用这个:
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
的{{1}}值评估为FALSE
而1
的评估结果为TRUE
,因此您可以直接使用此$tk
:
{{ Form::checkbox('tk', 1, $tk) }}
取决于1
的值(0
或$tk
),它可能是:
{{ Form::checkbox('tk', 1, 1) }} // Checked
{{ Form::checkbox('tk', 1, 0) }} // Unchecked
因此,如果$tk
包含1
,则checkbox
将为checked
,如果0
则为checked
,则{{1}}将不会{{1}}