我是CakePHP的新手,想在我用它编写的网站上有一个搜索工具。我在控制器中有search()函数,基本上所有逻辑都在这里。所以在视图文件夹中我创建了一个search.ctp文件,我在其中编写了表单的代码以填写搜索详细信息。但我无法弄清楚在哪里编写将显示搜索结果的代码。我应该创建另一个.ctp文件,如果是这样,那么如何将此文件与search()函数连接起来,因为它有另一个名称(而不是search.ctp)?提前谢谢。
答案 0 :(得分:1)
这不是必需的,但无论是否显示结果,您都必须在控制器功能和视图中进行切换。
例如,在您的控制器中,您将拥有:
function search()
{
if (!empty($this->data))
{
// .. do search, gather results
$this->set('results', $results);
}
}
只有在您输入表单时才会填写 $this->data
。
在你看来,你会写一些类似的东西:
if (isset($results))
{
// print table with results
}
else
{
// show search form
}
如果你想要一个单独的功能/网址,那更多的是品味问题。我个人更喜欢单独的视图,因为它减少了if / elses的数量。此外,搜索表单可以放在许多页面上,而您只有一个搜索结果页面。
答案 1 :(得分:0)
我认为更好的方法是使用两个不同的视图:
function search()
{
if (!empty($this->data))
{
// .. do search, gather results
$this->set('results', $results);
return $this->render('search_results');
}
return $this->render('search_form');
}
然后创建两个ctp文件search_results.ctp(带结果表)和search_form.ctp(带搜索表单)
您应该在视图中使用尽可能少的逻辑