转到cakephp分页器的页面表单

问题描述 投票:0回答:3

我有我的分页器设置,它工作得很好。现在我需要一个转到页面的表单来直接根据页面编号跳转到页面。我想知道是否可以通过为带有页码的输入字段设置正确的名称来完成,或者我必须自己做一些额外的事情?

我正在使用cakephp 1.3

php cakephp cakephp-1.3
3个回答
1
投票

执行您所要求的操作的最简单方法是使用 GET 方法和名为“page”的输入提交的表单:

<form method="get" action="/mycontroller/myaction/">
   <input type="text" name="page" />
   <input type="submit" />
</form>

这会将 ?page=[页码] 附加到您的网址。但是,如果您想要拥有漂亮的网址,另一种方法是在控制器中编写代码以使用命名参数进行重定向,这就是普通 Cake 分页方法的工作方式:

控制器:

if (!empty($this->params['url']['page'])) {         
$url = array('controller'=>'mycontroller', 'action' => 'myaction');
$url = array_merge($url, array('page'=>$this->params['url']['page']));          
$this->redirect($url);
}   

使用 Cake 的 Sanitize 函数确保文本输入值不包含恶意代码可能是个好主意。


1
投票

或者使用纯javascript、html,可以按如下方式完成

    <span>
        <a>Go to page</a>&nbsp;<input id="goInput" class="goPage" type="text" name="page" />
        <a id="goPageLink" onclick="window.location = window.location.pathname.replace(new RegExp('\/page:[0-9]*', 'g'), '')+'/page:'+document.getElementById('goInput').value;">Go</a>
    </span>

0
投票

$this->Html->link('foo', array('page' => 2)) 假设您已经位于正确的控制器/操作对中。如果不添加操作、控制器和/或插件到数组中

© www.soinside.com 2019 - 2024. All rights reserved.