将错误发送回表单:代码点火器

时间:2011-01-31 17:15:44

标签: php codeigniter

在这种情况下,我无法让表单验证库将表单错误发送回我的表单。

我有一个处理上传图像的控制器,名为addImage.php。该控制器仅处理do_upload处理。我有一个名为uploadimage.php的视图,其中包含上传表单并提交到/ addImage / do_upload。

上传表单使用

代码点火器中的模板加载到我网站的首页
<?php $this->load->view('uploadimage'); ?>

首页控制器包含在home.php中

现在验证失败后,我只是重定向到主页,显然没有加载错误(在addImage.php中)

if($this->_submit_validate() == FALSE)
        {
                redirect('/', 'location');
                return;         
        }

如何在保留这些错误的同时重定向到我的template_front.php。我可以以某种方式从uploadimage.php控制器调用我的home.php控制器来执行此操作吗?我迷惑自己试图解释它!如果这完全不清楚,请告诉我,我会尽力澄清。

3 个答案:

答案 0 :(得分:2)

the Documentation,您只需在失败时重新加载视图文件。

  if ($this->form_validation->run() == FALSE)
  {
   $this->load->view('myform');
  }
  else
  {
   $this->load->view('formsuccess');
  }

重定向生成新的服务器请求,刷新验证错误信息。

答案 1 :(得分:0)

验证失败时,您应该重新加载表单。可能是您想要添加一个按钮来隐藏上传。 在视图中,您应该添加一些标记来显示错误(有很多关于验证帮助的信息),例如:

<?=form_open_multipart("/personas/savefoto", array('class' => "form3") )?>
            <h3><?=$heading?></h3>

            <div class="center">
                <?php echo '<strong>'.mb_convert_case($record['nombre'].' '.$record['apellido1'].' '.$record['apellido2'], MB_CASE_TITLE).'</strong><br/>';
                if( file_exists("fotos/e".MATRIZ."/b".$record['id'].".jpg")){
                    ?>
                    <img class="foto" src="<?php echo base_url()."fotos/e".MATRIZ."/b".$record['id']?>.jpg"/>
                    <br/><br/>
                    <?php
                } ?>
            </div>

            <div class="form-row">
                <label for="imagen">Nueva imagen <br/>(jpg, gif o png)</label>
                <input type="file" name="userfile" size="20" />
                <br/>

                    <?php if(isset($error_image)) echo '<p class="error">'.$error_image.'</p>'; ?>
            </div>
            <div class="form-row center">
                <input type="submit" value="Aceptar" />
                <input type="button" value="Cancelar" onclick="location.href='/system.php/personas/admin';">
            </div>
            <?=form_close();?>

查找if(isset($ error_image))

答案 2 :(得分:0)

您可以使用validation_errors()函数并将它们设置为会话变量

$this->session->set_userdata(array('form_errors', validation_errors()));

然后在您的重定向页面上访问它们。

echo $this->session->userdata('form_errors');
$this->session->unset_userdata('form_errors'); // prevent them from being stored past use