新手php问题
我有一个文本框,用户搜索某些内容并返回一堆结果(控制器中的search()方法)当我点击链接时,我想要更多信息 显示(控制器中的searchMore()方法)。
问题
1)如何返回相同的search.ctp页面而不是创建新的search_more.ctp?使用元素还是包含php?使用重定向? 2)当我从searchMore()返回时,如何在文本框中保留用户输入数据? cakephp是否为会话提供了任何帮助?
由于
答案 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。