62dba7d8
Mihail
add goods control...
|
1
2
3
4
5
6
7
8
9
10
|
<?php
/**
* Created by PhpStorm.
* User: vitaliy
* Date: 08.11.15
* Time: 22:06
*/
namespace frontend\controllers;
|
f0a8acb5
Mihail
add sort function...
|
11
|
use common\components\CustomVarDamp;
|
1412c23a
Mihail
add crocc search ...
|
12
|
use common\models\DetailsCrosses;
|
b13c67c3
Mihail
output price in g...
|
13
|
use common\models\GoodsView;
|
1412c23a
Mihail
add crocc search ...
|
14
|
use common\models\GoodsViewSearch;
|
62dba7d8
Mihail
add goods control...
|
15
|
use Yii;
|
62dba7d8
Mihail
add goods control...
|
16
|
use yii\web\Controller;
|
5fc85d80
Administrator
VItaliy 21.12.2015
|
17
|
use common\models\Details;
|
62dba7d8
Mihail
add goods control...
|
18
|
|
8f02e664
Mihail
add multisort fun...
|
19
20
|
class GoodsController extends Controller
{
|
62dba7d8
Mihail
add goods control...
|
21
22
|
public $layout = '/internal';
|
8f02e664
Mihail
add multisort fun...
|
23
|
public function actionIndex($name, $id)
|
62dba7d8
Mihail
add goods control...
|
24
|
{
|
8f02e664
Mihail
add multisort fun...
|
25
|
$arr_name = explode('_', $name);
|
df73f762
Mihail
add crocc search ...
|
26
27
|
$brand = $arr_name[0];
$article = $arr_name[1];
|
bd74917c
Administrator
VItaliy 21.12.2015
|
28
|
|
8f02e664
Mihail
add multisort fun...
|
29
30
31
32
33
|
$params = Yii::$app->request->getQueryParams();
// получим параметры сортировки из гет запроса
$sort_params_or = $this->getSortParams($params, 'or');
$sort_params_cross = $this->getSortParams($params, 'cross');
|
5b5bfa85
Administrator
VItaliy 22.12.2015
|
34
|
|
b13c67c3
Mihail
output price in g...
|
35
|
$arr_values = ['name' => $article,
|
8f02e664
Mihail
add multisort fun...
|
36
|
'brand' => $brand];
|
b13c67c3
Mihail
output price in g...
|
37
|
$arr = ['GoodsViewSearch' => $arr_values];
|
5b5bfa85
Administrator
VItaliy 22.12.2015
|
38
|
|
89640009
Mihail
add sort function...
|
39
|
if (empty(Yii::$app->user->identity)) {
|
1ab92388
Administrator
VItaliy 22.12.2015
|
40
|
$margin_id = 1;
|
89640009
Mihail
add sort function...
|
41
|
} else {
|
1ab92388
Administrator
VItaliy 22.12.2015
|
42
43
44
|
$margin_id = Yii::$app->user->identity->margin_id;
}
|
8f02e664
Mihail
add multisort fun...
|
45
|
if (empty(Yii::$app->user->identity)) {
|
ec825628
Mihail
temp commit
|
46
|
$margin_id = 1;
|
8f02e664
Mihail
add multisort fun...
|
47
|
} else {
|
ec825628
Mihail
temp commit
|
48
49
|
$margin_id = Yii::$app->user->identity->margin_id;
}
|
1412c23a
Mihail
add crocc search ...
|
50
|
|
1412c23a
Mihail
add crocc search ...
|
51
|
Yii::$app->session->setFlash('price_currency_id', 1);
|
ec825628
Mihail
temp commit
|
52
|
Yii::$app->session->setFlash('price_margin_id', $margin_id);
|
1412c23a
Mihail
add crocc search ...
|
53
54
|
$searchModel = new GoodsViewSearch();
|
8f02e664
Mihail
add multisort fun...
|
55
|
$goods_provider = $searchModel->search($arr, $sort_params_or);
|
f0a8acb5
Mihail
add sort function...
|
56
|
|
8f02e664
Mihail
add multisort fun...
|
57
|
$crosses_provider = $searchModel->searchCrosses($arr, $sort_params_cross);
|
f0a8acb5
Mihail
add sort function...
|
58
|
|
b13c67c3
Mihail
output price in g...
|
59
60
61
|
// для заголовка таблицы (карточка товара)
$detailsModel = GoodsView::findOne($arr_values);
|
8f02e664
Mihail
add multisort fun...
|
62
|
return $this->render('index', [
|
1412c23a
Mihail
add crocc search ...
|
63
|
'goods_data_provider' => $goods_provider,
|
df73f762
Mihail
add crocc search ...
|
64
|
'crosses_data_provider' => $crosses_provider,
|
b13c67c3
Mihail
output price in g...
|
65
|
'detailsModel' => $detailsModel,
|
89640009
Mihail
add sort function...
|
66
67
|
'sort_params_or' => $sort_params_or,
'sort_params_cross' => $sort_params_cross,
|
f0a8acb5
Mihail
add sort function...
|
68
|
]);
|
62dba7d8
Mihail
add goods control...
|
69
70
|
}
|
8f02e664
Mihail
add multisort fun...
|
71
72
73
74
75
76
77
78
79
80
|
/**
* @param $params - массив параметров для сортировки
* @param $prefix - строка, перфикс таблицы сортировки (_or / _cross )
* @return массив - итоговый массив с параемтрами для сортировки который подставляется в запрос
*/
protected function getSortParams($params, $prefix)
{
$default_sort_params = ['price' => SORT_DESC];
$sort_params = [];
|
89640009
Mihail
add sort function...
|
81
|
if (empty($params['sort'])) {
|
8f02e664
Mihail
add multisort fun...
|
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
|
// нет параметров - сортируем по цене по убыванию
$sort_params = $default_sort_params;
} else {
// разбираем парметры
$sort_arr = explode('_', $params['sort']);
if ($sort_arr[1] === $prefix) {
if ($sort_arr[0][0] === '-') {
// если первый символ "-", то по убыванию
$sort_arr[0] = str_replace('-', '', $sort_arr[0]);
$sort_params[$sort_arr[0]] = SORT_ASC;
} else {
$sort_params[$sort_arr[0]] = SORT_DESC;
}
}
if ( empty( $sort_params ) ) {
|
8f02e664
Mihail
add multisort fun...
|
98
|
// если так и ненашли подходящих параметров, значит сортируем другую таблицу
|
89640009
Mihail
add sort function...
|
99
100
|
// а для этой дефолтная сортировка
$sort_params = $default_sort_params;
|
8f02e664
Mihail
add multisort fun...
|
101
102
|
}
}
|
8f02e664
Mihail
add multisort fun...
|
103
104
|
return $sort_params;
}
|
62dba7d8
Mihail
add goods control...
|
105
|
|
62dba7d8
Mihail
add goods control...
|
106
|
}
|