cakephp在同一个控制器中形成数据,会话和重用两个方法之间的视图

时间:2010-07-01 22:12:51

标签: php cakephp

新手php问题

我有一个文本框,用户搜索某些内容并返回一堆结果(控制器中的search()方法)当我点击链接时,我想要更多信息 显示(控制器中的searchMore()方法)。

问题

1)如何返回相同的search.ctp页面而不是创建新的search_more.ctp?使用元素还是包含php?使用重定向? 2)当我从searchMore()返回时,如何在文本框中保留用户输入数据? cakephp是否为会话提供了任何帮助?

由于

2 个答案:

答案 0 :(得分:1)

您的问题看起来像pagination问题。最简单的解决方案是,使用Paginator Helper将您的搜索结果分页只有两页,然后您可以轻松地将它们相互切换。另一种方法是{ {3}}像Twitter一样分页。

更新:(您最好将答案作为评论。)

好吧,如果我理解正确,你有相同的控制器,相同的搜索条件,但是当你需要它们使用相同的视图文件时,你将它们放在不同的操作中。

对于问题1),可以使用功能Ajax solution

来完成
    $this->render('search');
<_>在你的more_search行动中。

对于问题2),您可以将用户的输入数据作为参数传递给两个操作,也可以将它们存储在render中。

但它看起来有点奇怪。据我所知,一个更好的解决方案是在一个动作中完成你的工作,因为你有相同的条件和相同的输出格式。那么这将是一个关于分页的工作。 / p>

答案 1 :(得分:0)

我经常做这样的事情 - 比如PhpMyAdmin中的插入记录机制(再次以25条记录开始)。

searchMore()中,使用$this->render('search');这将返回原始视图。传递一个变量,如:

$this->set('searchMore',true);方法中的

searchMore()

在视图中,如果需要,使用条件(if($searchMore){...})根据需要在视图中显示备用HTML。