# 書籍搜索
基于我們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 結語