书籍搜索
基于我们API的设置,该Web应用可以提供两种类型的搜索:
- 根据书名的开始部分搜索;
- 根据单一TAG进行搜索;
上一节中我们提到,书籍列表页面有两个功能没有完成,其中一个就是搜索书名。
对应的控制器方法如下:
public function searchAction(Request $req)
{
$q = $req->request->all();
$page = 1;
$key = $q['key'];
$uri = $this->get('router')->generate('book_list', array('page' => $page, 'key' => $key, 'type' => 'title'));
return $this->redirect($uri);
}
这里我们需要注意的是,在搜索栏里输入的文字缺省被认为是书名的开始部分,也就是说,我们缺省认为我们按照书名搜索。
另外,搜索的过程其实并不搜索!我们只是根据当前情景构造了一个URI而已!这就是之前我们提到的book_list
这个路由灵活性带来的好处了。而且,在此情形下,显示书籍列表的模板也可以被复用,而且在书名搜索模式(和TAG搜索)模式下,关键字在分页时不会被丢失。这是因为在构造所有相关的URI的时候,搜索类型和关键字都是被传递的。
至此,所有重要的前端页面都已经基本描述完毕。
笔者在此鼓励读者自行完成其它页面的构建。
下一小节我们开始讲述用户和后台的编写。