1

我目前正在一个网站上工作,我想在弹出框中显示各种类型的错误,这些错误与表单验证和表单上传有关。我已经尝试了很多使用各种调用来加载该弹出框,例如

$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 中有一个锚点,即“注册”,当我单击它时,我可以看到注册弹出窗口。现在,我的问题是如何调用弹出框,以便在用户提供无效数据或发生任何上传错误时显示错误。

4

1 回答 1

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 以在页面加载时触发事件,但这似乎有点奇怪。

于 2013-10-27T10:51:45.663 回答