加载目标锚点视图 - codeigniter

时间:2013-10-27 10:36:27

标签: php codeigniter

我目前正在开发一个网站,我想在弹出框中显示各种类型的错误,错误与表单验证和表单上传有关。我已尝试使用各种调用(如

)加载弹出框
$this->load->view('registration_popup'); 
$this->load->view('index.php#register_popup'); 
$this->load->view('#register_popup'); 
但是一切都在静脉中。我有两页'index.php'和'registration_popup'。页面'registration_popup'是'index.php'文件的一部分,我已将其切片并包含在index.php中。 index.php里面有一个锚,即'Register',当我点击它时,我可以看到注册弹出窗口。现在,我的问题是如何调用弹出框,以便在用户传递无效数据或发生任何上载错误时显示错误。

1 个答案:

答案 0 :(得分:0)

我认为你可能会对视图的工作方式感到困惑。加载器只包含views/目录中与您提供的名称对应的文件,并(可选)解压缩数组,以便您可以访问视图中的视图数据。每次调用(默认情况下)只是将视图中解析的内容放入输出缓冲区。

对于通知,最好只在传递给加载器的数组中设置错误消息,然后在页面中包含/检查它。使用一些JS允许用户在一段时间后关闭通知或将其隐藏。

例如(控制器):

$pageData['error'] = 'The database server was eaten by an elephant';

$this->load->view('example', $pageData);

然后,在您看来:

<?php
if (isset($error)):
?>
<div id="error"><?php echo $error;?></div>
<?php
endif;
?>

然后你需要一个小的JS让用户解雇错误div(隐藏或删除它),或者再次尝试请求的链接,或者在错误的上下文中有意义的任何内容。一个小jQuery做得那么容易:

<?php
if (isset($error)):
?>
$(document).ready(function() {
    $('.dismiss', '#error').click(function() { 
        $('#error').fadeOut('fast', function() { 
         // any additional dom fiddling that needs done once it vanishes
        })
    })
})
<?php
endif;
?>

这是一个粗略的例子,当然你不敢加载jQuery只是为了隐藏div :)但你明白了。只需在错误中使用'dismiss'的类属性链接。如您所见,如果没有错误可言,您不需要包含JS。

或者,可以包含一些额外的JS来在页面加载时触发事件,但这看起来有点奇怪。