Php 防止在提交后重置复选框

Php 防止在提交后重置复选框,php,laravel-4,get,Php,Laravel 4,Get,嗨,我正在开发一个laravel应用程序,我有一个如下所示的表单 <div class="row form-wrapper"> <form class="form-horizontal" method="get" autocomplete="off" name="calculateform" id="calculateform" > <div class="form-group {{ $errors->has('Year') ? ' ha

嗨,我正在开发一个laravel应用程序,我有一个如下所示的表单

<div class="row form-wrapper">
   <form class="form-horizontal" method="get" autocomplete="off" name="calculateform" id="calculateform" >
        <div class="form-group {{ $errors->has('Year') ? ' has-error' : '' }}">
                   <label for="Year" class="col-md-3 control-label calculate-label">@lang('admin/calculate2014/form.Calculate_dep')</label>
                   <?php
                        global $Year;
                        $years = array();
                        for ($i = 2013; $i < 2050; $i++)
                        {                       
                          $years[] = $i;
                        } 

                        echo '<select name="Year" class="controls assettext select2 selectyear" id="Year"  >';
                        echo '<option value="">-- Select Year --</option>';
                        foreach($years as $option)
                        {
                            echo "<option value='{$option}'";
                            if (isset($_GET['Year'])) { if ($_GET['Year'] == $option) { echo 'selected'; } }
                            echo ">{$option}</option>";   
                        }  
                        echo "</select>";

                   ?>
                       <input type="submit" class="btn btn-flat gray nextbtn" id ="next" value="Proceed"  />    

                        <div class="form-group {{ $errors->has('recalculate') ? 'error' : '' }}">
                          <label for="nesd" class="col-md-3 control-label recallabel">Recalculate</label>
                             <div class="controls col-md-7">
                                <input name="recalculate" type="checkbox" id="recalculate" value="yes" class="recalculate recalbtn"  >
                                {{ $errors->first('recalculate', '<span class="alert-msg"><i class="icon-remove-sign"></i> :message</span>') }}
                             </div>
                        </div>

                     <?php
                        if($_GET)
                        {   
                           echo'<br/>';
                           echo'<br/>';
                           echo'<br/>';
                           $Year =$_GET['Year']; 
                        }           
                     ?>  

                   {{ $errors->first('Year', '<span class="alert-msg"><i class="icon-remove-sign"></i> :message</span>') }}
        </div>

                <div  class="proceedhide" id="caution" >
                   <span class="alert-msg cautionmsg"><b>Caution:</b>Be careful if recalculate is checked the database will be refreshed.</span>
                </div>
    </form>
</div>

@lang('admin/calculate2014/form.Calculate\u dep')

试试这个:

<input type="checkbox" name="recalculate" value="yes" <?php if($_GET['recalculate']=='yes') { ?> checked="checked"<?php } ?> />
/>

尝试删除
值=“yes”
,然后检查它是否打开:

<input type="checkbox" name="recalculate" <?php echo(isset($_GET['recalculate']) && $_GET['recalculate']=='on')?"checked":""?>>

这不是对你问题的回答,而是一句小评论。如果要内联回显php函数,可以将其写得更短,例如:将“是”更改为“开”以检查是否选中了“重新计算”,还可以检查值是否为isset以防止警告(isset($\u GET['recalculate']))
只有在启用短标记时才可能重复@WesselvanderLinden。错误的做法是,如果您需要将代码移动到另一台服务器,在那里您无法控制php.ini,并且短标记未启用。@WesselvanderLinden这个问题真的很有争议。你可以在这里读到关于这一点的长时间讨论,因此:我尝试了上面显示未定义索引的代码:重新计算。@Arul,这只是一个警告。只需做一件事,请先定义
重新计算
,然后在代码中使用。我尝试了上面显示未定义索引的代码:重新计算。嗯,可能添加isset()方法:我尝试了这个方法,得到了“Symfony\Component\Debug\Exception\FatalErrorException不能对表达式的结果使用isset()(可以改为使用“null!==expression)”
<input type="checkbox" name="recalculate" <?php echo(isset($_GET['recalculate']) && $_GET['recalculate']=='on')?"checked":""?>>