我有两个类似的功能,一个输出改变而另一个没有

时间:2014-04-21 20:28:57

标签: php forms laravel

此代码使用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);
    }

1 个答案:

答案 0 :(得分:1)

你正在使用这个:

if($tk == 1){
    $tk = 'true';
} else {
    $tk = 'false';
}

在这种情况下,$tk始终为真,因为true String不是Boolean值,而$tk用作Booleantrue值,它出现在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}}值评估为FALSE1的评估结果为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}}