我在一个长页面的底部有一个表单,如果用户填写表单但它没有验证页面是否以典型的codeigniter方式重新加载:
$this->load->view('template',$data);
但是因为表单在页面底部向下,我需要像使用HTML锚点那样加载页面。有没有人知道如何在codeigniter中这样做?
我无法使用codeigniter
redirect();
函数,因为它丢失了对象并且验证错误消失了。我使用的其他框架就像Yii你可以调用重定向函数,如:
$this->redirect();
解决了这个问题,因为你保留了对象。我尝试过使用:
$this->index()
作为重定向工作正常,但验证错误在另一个方法中,该方法是从当前页面加载的地方:
$this->item($labs)
但是当我使用它时它会陷入循环
有什么想法吗?我在网上看到了很多这个问题,但没有明确的答案。我正在研究使用codeigniter“flash data”,但认为它有点矫枉过正。
欢呼声。
答案 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中执行此操作?
因为我觉得这与问题无关。