# 书籍搜索
基于我们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的时候,搜索类型和关键字都是被传递的。
至此,所有重要的前端页面都已经基本描述完毕。
笔者在此鼓励读者自行完成其它页面的构建。
下一小节我们开始讲述用户和后台的编写。
- 引言
- 1 LAMP
- 1.1 安装虚拟机
- 1.2 安装Vagrant
- 1.3 安装Ubuntu
- 1.4 安装Apache 2
- 1.5 安装PHP
- 1.6 安装MySQL服务器
- 1.7 最后的微调
- 1.8 设置一个虚拟主机
- 1.9 一个趁手的IDE
- 2 Symfony 3和重要构件
- 2.1 Symfony 3
- 2.2 Doctrine
- 2.3 Twig
- 2.4 Composer
- 3 Symfony重要概念
- 3.1 MVC
- 3.2 Bundle/包
- 3.3 Route/路由
- 3.4 Controller/控制器
- 3.5 Entity/实体
- 3.6 Repository/仓库
- 3.7 Template/模板
- 3.8 Test/测试
- 4 藏书管理程序的结构
- 5 创建应用
- 5.1 建立版本管理
- 5.2 建立数据库
- 5.3 应用结构
- 5.4 建立数据库实体
- 5.5 样本数据
- 5.6 路由
- 5.7 模板
- 5.8 开始编写首页
- 5.9 书籍详情页面
- 5.10 书籍列表页面
- 5.11 书籍搜索
- 6 用户和后台
- 7 结语