Codeigniter PHP - 在锚点加载视图

时间:2012-09-21 15:22:21

标签: php validation codeigniter

我在一个长页面的底部有一个表单,如果用户填写表单但它没有验证页面是否以典型的codeigniter方式重新加载:

$this->load->view('template',$data);

但是因为表单在页面底部向下,我需要像使用HTML锚点那样加载页面。有没有人知道如何在codeigniter中这样做?

我无法使用codeigniter

redirect();

函数,因为它丢失了对象并且验证错误消失了。我使用的其他框架就像Yii你可以调用重定向函数,如:

$this->redirect();

解决了这个问题,因为你保留了对象。我尝试过使用:

$this->index()

控制器中的

作为重定向工作正常,但验证错误在另一个方法中,该方法是从当前页面加载的地方:

$this->item($labs)

但是当我使用它时它会陷入循环

有什么想法吗?我在网上看到了很多这个问题,但没有明确的答案。我正在研究使用codeigniter“flash data”,但认为它有点矫枉过正。

欢呼声。

2 个答案:

答案 0 :(得分:5)

我无法亲自担保,但根据this thread,如果您将锚点附加到表单的action,则可以使用。

CodeIgniter帮助:

<?php echo form_open('controller/function#anchor'); ?>

或vanilla HTML:

<form method='post' action='controller/function#anchor'>

如果您愿意使用Javascript,则可以轻松检测$validation_failed变量并适当滚动。或者,更好的是,使用AJAX。

另一个选择是将表单放在页面顶部附近吗?

答案 1 :(得分:0)

好的,就我理解你的问题而言,与后端(codeigniter)相关的 很多。您希望页面底部的表单是&#39; what-users-sees-on-page-load&#39; (因为你提到了锚点)。

现在,您可以使用以下方法设置验证错误消息的分隔符:

echo validation_errors('<div id="bottom_form_error">', '</div>');

使用jQuery ScrollTo,执行:

$( function() { $('#bottom_form_error').ScrollTo(); } );

并且,用户将滚动到页面底部的错误。别忘了包含jQuery。

锚点哈希片段点击不同 - 它以速度滚动。

我希望这就是你想要的。


P.S。我忽略了你在这一行下面所说的话:

  

有没有人知道如何在codeigniter中执行此操作?

因为我觉得这与问题无关。