Egorka
7 years ago
13 changed files with 216 additions and 17 deletions
@ -0,0 +1,41 @@ |
|||||||
|
<?php |
||||||
|
|
||||||
|
use core\entities\Search; |
||||||
|
use yii\helpers\Html; |
||||||
|
use yii\grid\GridView; |
||||||
|
use yii\helpers\StringHelper; |
||||||
|
|
||||||
|
/* @var $this yii\web\View */ |
||||||
|
/* @var $provider yii\data\ActiveDataProvider */ |
||||||
|
/* @var $form \core\forms\SearchForm */ |
||||||
|
|
||||||
|
$title = Yii::t('main', 'Search results'); |
||||||
|
$this->title = $title . ' > ' . Html::encode($form->query); |
||||||
|
$this->params['breadcrumbs'][] = $title; |
||||||
|
?> |
||||||
|
<div class="blog-post-index"> |
||||||
|
|
||||||
|
<div class="box"> |
||||||
|
<div class="box-body"> |
||||||
|
<?= GridView::widget([ |
||||||
|
'dataProvider' => $provider, |
||||||
|
'showHeader' => false, |
||||||
|
'options' => [ |
||||||
|
'style' => 'word-wrap:break-word;', |
||||||
|
], |
||||||
|
'tableOptions' => [ |
||||||
|
'class' => 'table', |
||||||
|
], |
||||||
|
'columns' => [ |
||||||
|
[ |
||||||
|
'attribute' => 'title', |
||||||
|
'value' => function (Search $model) { |
||||||
|
return Html::a(Html::tag('h3', $model->title), [$model->url]) . StringHelper::truncateWords(strip_tags($model->content), 60, '...'); |
||||||
|
}, |
||||||
|
'format' => 'raw', |
||||||
|
], |
||||||
|
], |
||||||
|
]); ?> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
</div> |
@ -0,0 +1,20 @@ |
|||||||
|
<?php |
||||||
|
/** |
||||||
|
* Created by Error202 |
||||||
|
* Date: 05.07.2018 |
||||||
|
* |
||||||
|
* Init / Update search mysql performance |
||||||
|
*/ |
||||||
|
|
||||||
|
namespace console\controllers; |
||||||
|
|
||||||
|
use core\components\SearchPerformance; |
||||||
|
use yii\console\Controller; |
||||||
|
|
||||||
|
class SearchInitController extends Controller { |
||||||
|
|
||||||
|
public function actionInit() { |
||||||
|
SearchPerformance::init(); |
||||||
|
echo "Search performance complete" . PHP_EOL; |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,19 @@ |
|||||||
|
<?php |
||||||
|
/** |
||||||
|
* Created by Error202 |
||||||
|
* Date: 05.07.2018 |
||||||
|
*/ |
||||||
|
|
||||||
|
namespace core\components; |
||||||
|
|
||||||
|
use Yii; |
||||||
|
|
||||||
|
class SearchPerformance { |
||||||
|
public static function init() |
||||||
|
{ |
||||||
|
$connection = Yii::$app->getDb(); |
||||||
|
$command = $connection->createCommand(" |
||||||
|
CREATE OR REPLACE VIEW view_search AS " . implode(' UNION ', Yii::$app->params['search_rules'])); |
||||||
|
$command->execute(); |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,26 @@ |
|||||||
|
<?php |
||||||
|
/** |
||||||
|
* Created by Error202 |
||||||
|
* Date: 05.07.2018 |
||||||
|
*/ |
||||||
|
|
||||||
|
namespace core\entities; |
||||||
|
|
||||||
|
use yii\db\ActiveRecord; |
||||||
|
|
||||||
|
/** |
||||||
|
* Class Search |
||||||
|
* @package core\entities |
||||||
|
* |
||||||
|
* @property string $title |
||||||
|
* @property string $content |
||||||
|
* @property string $url |
||||||
|
*/ |
||||||
|
|
||||||
|
class Search extends ActiveRecord |
||||||
|
{ |
||||||
|
public static function tableName(): string |
||||||
|
{ |
||||||
|
return '{{view_search}}'; |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,21 @@ |
|||||||
|
<?php |
||||||
|
/** |
||||||
|
* Created by Error202 |
||||||
|
* Date: 10.02.2018 |
||||||
|
*/ |
||||||
|
|
||||||
|
namespace core\forms; |
||||||
|
|
||||||
|
use yii\base\Model; |
||||||
|
|
||||||
|
class SearchForm extends Model |
||||||
|
{ |
||||||
|
public $query; |
||||||
|
|
||||||
|
public function rules() { |
||||||
|
return [ |
||||||
|
['query', 'required'], |
||||||
|
['query', 'string'], |
||||||
|
]; |
||||||
|
} |
||||||
|
} |
Loading…
Reference in new issue