我是CakePHP的新手,希望在我使用它编写的网站中有一个搜索工具。我在控制器中有search()函数,基本上所有的逻辑都在那里。在视图文件夹中,我创建了一个搜索。ctp文件,我在其中编写了用于填写搜索详细信息的表单代码。但我不知道在哪里写代码,将显示搜索结果。我是否应该创建另一个.ctp文件,如果是这样,那么我如何将该文件与search()函数连接,因为它将具有另一个名称(而不是search.ctp)?
这不是必需的,但无论是否显示结果,您都必须在控制器功能和视图中进行切换。
例如,在你的控制器中,你可以这样写:
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
}
如果你想要一个单一的函数/url,这更多的是一个品味问题。就我个人而言,我更喜欢独立的观点,因为它减少了"如果/其他"的数量。此外,一个搜索表单可能被放置在多个页面上,而您只有一个搜索结果页面。
我认为最好使用两个单独的视图:
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(带搜索表)
你应该在视图中使用尽可能少的逻辑