书籍搜索

基于我们API的设置,该Web应用可以提供两种类型的搜索:

  • 根据书名的开始部分搜索;
  • 根据单一TAG进行搜索;
    上一节中我们提到,书籍列表页面有两个功能没有完成,其中一个就是搜索书名。

对应的控制器方法如下:

  1. public function searchAction(Request $req)
  2. {
  3. $q = $req->request->all();
  4. $page = 1;
  5. $key = $q['key'];
  6. $uri = $this->get('router')->generate('book_list', array('page' => $page, 'key' => $key, 'type' => 'title'));
  7. return $this->redirect($uri);
  8. }

这里我们需要注意的是,在搜索栏里输入的文字缺省被认为是书名的开始部分,也就是说,我们缺省认为我们按照书名搜索。

另外,搜索的过程其实并不搜索!我们只是根据当前情景构造了一个URI而已!这就是之前我们提到的book_list这个路由灵活性带来的好处了。而且,在此情形下,显示书籍列表的模板也可以被复用,而且在书名搜索模式(和TAG搜索)模式下,关键字在分页时不会被丢失。这是因为在构造所有相关的URI的时候,搜索类型和关键字都是被传递的。

至此,所有重要的前端页面都已经基本描述完毕。

笔者在此鼓励读者自行完成其它页面的构建。

下一小节我们开始讲述用户和后台的编写。