71 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			PHP
		
	
	
		
			Executable File
		
	
			
		
		
	
	
			71 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			PHP
		
	
	
		
			Executable File
		
	
| <?php
 | |
| 
 | |
| namespace app\controller;
 | |
| 
 | |
| use app\model\{Category, ProductModel};
 | |
| use page\DxtcPageA;
 | |
| use think\Paginator;
 | |
| 
 | |
| class Search extends Base
 | |
| {
 | |
|     //列表页
 | |
|     public function index()
 | |
|     {
 | |
|         $type = input('type/s', 'product');
 | |
|         if (!in_array($type, ['product', 'news', 'scheme'])) {
 | |
|             return [];
 | |
|         }
 | |
| 
 | |
|         $keyword = input('keyword/s', '');
 | |
| 
 | |
|         if (empty($keyword)) {
 | |
|             return $this->error('请输入搜索关键词');
 | |
|         }
 | |
| 
 | |
|         // 自定义分页驱动
 | |
|         app('think\App')->bind(Paginator::class, DxtcPageA::class);
 | |
| 
 | |
|         $items     = [];
 | |
|         $paginate  = [
 | |
|             'list_rows' => 20,
 | |
|             'query'     => ['keyword' => $keyword, 'type' => $type]
 | |
|         ];
 | |
|         $orderList = ['sort' => 'desc', 'id' => 'desc'];
 | |
|         $path      = '';
 | |
|         switch ($type) {
 | |
|             case 'product':
 | |
|                 $items = ProductModel::where('title|description|content|params', 'like', '%'.$keyword.'%')
 | |
|                     ->where('visible', 1)
 | |
|                     ->order($orderList)
 | |
|                     ->paginate($paginate);
 | |
|                 $path  = '/product/detail.html';
 | |
|                 break;
 | |
|             case 'news':
 | |
|                 $categoryIds = Category::where('template_list', Category::TEMPLATE_NEWS)->column('id');
 | |
|                 $items       = \app\model\Article::where('title|summary|content', 'like', '%'.$keyword.'%')
 | |
|                     ->whereIn('category_id', $categoryIds)
 | |
|                     ->where('status', 1)
 | |
|                     ->order($orderList)
 | |
|                     ->paginate($paginate);
 | |
|                 $path        = '/news/detail.html';
 | |
|                 break;
 | |
|             case 'scheme':
 | |
|                 $categoryIds = Category::where('template_list', Category::TEMPLATE_SCHEME)->column('id');
 | |
|                 $items       = \app\model\Article::where('title|summary|content', 'like', '%'.$keyword.'%')
 | |
|                     ->whereIn('category_id', $categoryIds)
 | |
|                     ->where('status', 1)
 | |
|                     ->order($orderList)
 | |
|                     ->paginate($paginate);
 | |
|                 $path        = '/scheme/detail.html';
 | |
|                 break;
 | |
|         }
 | |
| 
 | |
|         $this->data['items']     = $items;
 | |
|         $this->data['bodyClass'] = 'main';
 | |
|         $this->data['type']      = $type;
 | |
|         $this->data['keyword']   = $keyword;
 | |
|         $this->data['path']      = $path;
 | |
| 
 | |
|         return $this->view();
 | |
|     }
 | |
| } |