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();
|
|
}
|
|
} |