Codeigniter PHP - 在锚点加载视图
Posted
技术标签:
【中文标题】Codeigniter PHP - 在锚点加载视图【英文标题】:Codeigniter PHP - loading a view at an anchor point 【发布时间】:2012-09-14 01:10:28 【问题描述】:我在一个长页面的底部有一个表单,如果用户填写了表单但它没有验证页面是否以典型的 codeigniter 方式重新加载:
$this->load->view('template',$data);
但是,由于表单位于页面底部,因此我需要将页面加载到那里,就像使用 html 锚点一样。有谁知道如何在codeigniter中做到这一点?
我无法使用 codeigniter
redirect();
函数,因为它丢失了对象并且验证错误消失了。我用过的其他框架,比如 Yii,你可以调用重定向函数,比如:
$this->redirect();
这解决了问题,因为您保留了对象。我试过使用:
$this->index()
在控制器内,它可以作为重定向正常工作,但验证错误出现在另一种方法中,即当前页面的加载位置:
$this->item($labs)
但是当我使用它时,它会卡在一个循环中
有什么想法吗?我在网上看到很多这个问题,但没有明确的答案。我正在研究使用 codeigniter“闪存数据”,但认为这有点矫枉过正。
干杯。
【问题讨论】:
@"overkill" 是什么让你这么认为? IMO 这是一个非常好的功能,我想这正是为这些事情而设计的。 你愿意使用 javascript 吗? @goldenparrot 也许我对那句话有点矫枉过正。我不反对闪存数据,但认为可以通过其他方式完成。 @aziz.punjani 我已经在使用 javascript 进行验证,但这是单独的,因为它适用于非 javascript 用户。虽然欢呼 【参考方案1】:我不能亲自保证这一点,但根据this thread,如果您将锚附加到表单的action
,它将起作用。
CodeIgniter 助手:
<?php echo form_open('controller/function#anchor'); ?>
或普通 HTML:
<form method='post' action='controller/function#anchor'>
如果您愿意使用 Javascript,您可以轻松检测到 $validation_failed
变量并适当地滚动。或者,更好的是,使用 AJAX。
另一种选择是将表单放在页面顶部附近?
【讨论】:
很高兴找到乔丹,这很有效!我什至没有尝试过,因为我确信它不会起作用。 Codeigniter 必须将它内置到路由控制器中才能使用哈希“#”分割任何 url 字符串。谢谢老兄! @JamesBillings 乐于提供帮助 :)【参考方案2】:好的,据我了解您的问题,它与后端(codeigniter)的关系并不太多。您希望页面底部的表单是“what-users-sees-on-page-load”(因为您提到了锚点)。
现在,您可以使用以下方法为验证错误消息设置分隔符:
echo validation_errors('<div id="bottom_form_error">', '</div>');
使用jQuery ScrollTo,执行:
$( function() $('#bottom_form_error').ScrollTo(); );
并且,用户将被滚动到页面底部的错误。不要忘记也包含 jQuery。
锚散列片段点击不同 - 它以∞ 的速度滚动。
我希望这是你想要的。
附:我忽略了你在这行下面说的话:
有谁知道如何在 codeigniter 中做到这一点?
因为我觉得这与问题无关。
【讨论】:
评论与验证有关。但是,我认为 aziz 真的想知道他是否可以使用 javascript 来滚动。即使 aziz 没有,我认为这是一个有效的问题:如果表单位于底部,OP 是否想要使用 javascript 滚动到验证错误?如果是,那么这是一种方法。 谢谢,但我已经用 JS 覆盖了所有内容。如果用户没有 JS 那是个问题。这就是codeigniter在正确的位置重新加载页面的全部内容,只有在禁用JS的情况下才能使用锚标记来实现。不过感谢您的帮助!以上是关于Codeigniter PHP - 在锚点加载视图的主要内容,如果未能解决你的问题,请参考以下文章