Commit 998611ceb89c5c8ae1c994f424d8b848fe8bd750
1 parent
5860e30d
add Vitaliy's widgets
Showing
6 changed files
with
114 additions
and
51 deletions
Show diff stats
1 | +<?php | ||
2 | + | ||
3 | +namespace common\models; | ||
4 | + | ||
5 | +use Yii; | ||
6 | + | ||
7 | +/** | ||
8 | + * This is the model class for table "cities". | ||
9 | + * | ||
10 | + * @property integer $id | ||
11 | + * @property string $name | ||
12 | + * @property integer $is_active | ||
13 | + * @property integer $parent | ||
14 | + */ | ||
15 | +class Cities extends \yii\db\ActiveRecord | ||
16 | +{ | ||
17 | + /** | ||
18 | + * @inheritdoc | ||
19 | + */ | ||
20 | + public static function tableName() | ||
21 | + { | ||
22 | + return 'cities'; | ||
23 | + } | ||
24 | + | ||
25 | + /** | ||
26 | + * @inheritdoc | ||
27 | + */ | ||
28 | + public function rules() | ||
29 | + { | ||
30 | + return [ | ||
31 | + [['is_active', 'parent'], 'integer'], | ||
32 | + [['name'], 'string', 'max' => 255], | ||
33 | + ]; | ||
34 | + } | ||
35 | + | ||
36 | + /** | ||
37 | + * @inheritdoc | ||
38 | + */ | ||
39 | + public function attributeLabels() | ||
40 | + { | ||
41 | + return [ | ||
42 | + 'id' => 'ID', | ||
43 | + 'name' => 'Name', | ||
44 | + 'is_active' => 'Is Active', | ||
45 | + 'parent' => 'Parent', | ||
46 | + ]; | ||
47 | + } | ||
48 | +} |
frontend/assets/AppAsset.php
@@ -38,7 +38,7 @@ class AppAsset extends AssetBundle | @@ -38,7 +38,7 @@ class AppAsset extends AssetBundle | ||
38 | ]; | 38 | ]; |
39 | public $depends = [ | 39 | public $depends = [ |
40 | 'yii\web\YiiAsset', | 40 | 'yii\web\YiiAsset', |
41 | - 'backend\assets\FileUploadAsset' | 41 | + 'backend\assets\FileUploadAsset', |
42 | ]; | 42 | ]; |
43 | public $jsOptions = array( | 43 | public $jsOptions = array( |
44 | 'position' => \yii\web\View::POS_HEAD | 44 | 'position' => \yii\web\View::POS_HEAD |
frontend/config/main.php
@@ -47,7 +47,6 @@ return [ | @@ -47,7 +47,6 @@ return [ | ||
47 | 'showScriptName' => false, | 47 | 'showScriptName' => false, |
48 | 'rules' => [ | 48 | 'rules' => [ |
49 | 'landing/<view:[\w-]+>' => 'landing/view', | 49 | 'landing/<view:[\w-]+>' => 'landing/view', |
50 | - 'site/city/<query:[\d]+>' => 'site/city', | ||
51 | ] | 50 | ] |
52 | ], | 51 | ], |
53 | ], | 52 | ], |
frontend/controllers/SiteController.php
1 | <?php | 1 | <?php |
2 | namespace frontend\controllers; | 2 | namespace frontend\controllers; |
3 | 3 | ||
4 | +use common\models\Cities; | ||
4 | use common\models\Specialization; | 5 | use common\models\Specialization; |
5 | use common\models\UserInfo; | 6 | use common\models\UserInfo; |
6 | use Yii; | 7 | use Yii; |
@@ -49,21 +50,23 @@ class SiteController extends Controller | @@ -49,21 +50,23 @@ class SiteController extends Controller | ||
49 | 50 | ||
50 | 51 | ||
51 | 52 | ||
52 | - public function actionCity($query){ | ||
53 | - \Yii::$app->response->format = \yii\web\Response::FORMAT_JSON; | ||
54 | - $out = ['results' => ['id' => '', 'text' => '']]; | ||
55 | - if (!is_null($query)) { | ||
56 | - $query = new Query(); | ||
57 | - $query->select('id, name AS text') | ||
58 | - ->from('city') | ||
59 | - ->where(['like', 'name', $query]) | ||
60 | - ->limit(20); | ||
61 | - $command = $query->createCommand(); | ||
62 | - $data = $command->queryAll(); | ||
63 | - $out['results'] = array_values($data); | ||
64 | - } | ||
65 | - | ||
66 | - return $out; | 53 | + public function actionCity($q = null, $id = null) { |
54 | + \Yii::$app->response->format = \yii\web\Response::FORMAT_JSON; | ||
55 | + $out = ['results' => ['id' => '', 'text' => '']]; | ||
56 | + if (!is_null($q)) { | ||
57 | + $query = new Query; | ||
58 | + $query->select('id, name AS text') | ||
59 | + ->from('cities') | ||
60 | + ->where(['like', 'name', $q]) | ||
61 | + ->limit(20); | ||
62 | + $command = $query->createCommand(); | ||
63 | + $data = $command->queryAll(); | ||
64 | + $out['results'] = array_values($data); | ||
65 | + } | ||
66 | + elseif ($id > 0) { | ||
67 | + $out['results'] = ['id' => $id, 'text' => Cities::find($id)->name]; | ||
68 | + } | ||
69 | + return $out; | ||
67 | } | 70 | } |
68 | 71 | ||
69 | 72 |
frontend/models/SignupForm.php
@@ -17,6 +17,7 @@ class SignupForm extends Model | @@ -17,6 +17,7 @@ class SignupForm extends Model | ||
17 | public $lastname; | 17 | public $lastname; |
18 | public $verifyCode; | 18 | public $verifyCode; |
19 | public $location; | 19 | public $location; |
20 | + public $type; | ||
20 | 21 | ||
21 | /** | 22 | /** |
22 | * @inheritdoc | 23 | * @inheritdoc |
@@ -39,6 +40,8 @@ class SignupForm extends Model | @@ -39,6 +40,8 @@ class SignupForm extends Model | ||
39 | 40 | ||
40 | ['verifyCode', 'captcha'], | 41 | ['verifyCode', 'captcha'], |
41 | 42 | ||
43 | + ['type', 'integer'], | ||
44 | + | ||
42 | ['password', 'required'], | 45 | ['password', 'required'], |
43 | ['password', 'string', 'min' => 6], | 46 | ['password', 'string', 'min' => 6], |
44 | ]; | 47 | ]; |
frontend/views/site/registration.php
@@ -5,7 +5,9 @@ | @@ -5,7 +5,9 @@ | ||
5 | */ | 5 | */ |
6 | use yii\captcha\Captcha; | 6 | use yii\captcha\Captcha; |
7 | use yii\widgets\ActiveForm; | 7 | use yii\widgets\ActiveForm; |
8 | - $this->registerJsFile('/js/selectize.js'); | 8 | + use kartik\select2\Select2; |
9 | + use yii\web\JsExpression; | ||
10 | + | ||
9 | ?> | 11 | ?> |
10 | <div class="section-box content"> | 12 | <div class="section-box content"> |
11 | <div class="section-box registration"> | 13 | <div class="section-box registration"> |
@@ -48,18 +50,26 @@ | @@ -48,18 +50,26 @@ | ||
48 | <div class="who-you-are-title style">Кто Вы</div> | 50 | <div class="who-you-are-title style">Кто Вы</div> |
49 | <div class="who-you-are-form-wr style"> | 51 | <div class="who-you-are-form-wr style"> |
50 | <div class="who-you-are-form"> | 52 | <div class="who-you-are-form"> |
51 | - <div class="check-radio-wr"> | ||
52 | 53 | ||
53 | - <div class="custom-form-buttons"> | ||
54 | - <input class="custom-radio" id="custom-radio-1" name="group-1" checked="checked" type="radio"> | ||
55 | - <label for="custom-radio-1"><span></span>Частное лицо copy</label> | ||
56 | - </div> | ||
57 | 54 | ||
58 | - <div class="custom-form-buttons"> | ||
59 | - <input class="custom-radio" id="custom-radio-2" name="group-1" type="radio"> | ||
60 | - <label for="custom-radio-2"><span></span>Компания</label> | ||
61 | - </div> | ||
62 | - </div> | 55 | + |
56 | + <?= $form->field ($model, 'type',['options'=> ['class'=>'check-radio-wr']]) | ||
57 | + ->label (false) | ||
58 | + ->radioList ( | ||
59 | + [1 => 'Частное лицо', 2 => 'Компания'], | ||
60 | + [ | ||
61 | + 'item' => function($index, $label, $name, $checked, $value) { | ||
62 | + $return = '<div class="custom-form-buttons">'; | ||
63 | + $return .= '<input class="custom-radio" id="custom-radio-'.$value.'" type="radio" name="' . $name . '" value="' . $value . '" >'; | ||
64 | + $return .= '<label for="custom-radio-'.$value.'" ><span></span>' . $label .'</label>'; | ||
65 | + $return .= '</div>'; | ||
66 | + return $return; | ||
67 | + } | ||
68 | + ] | ||
69 | + ); | ||
70 | + ?> | ||
71 | + | ||
72 | + | ||
63 | <div class="check-radio-wr"> | 73 | <div class="check-radio-wr"> |
64 | <div class="custom-form-buttons"> | 74 | <div class="custom-form-buttons"> |
65 | <input class="custom-check" id="custom-check-1" type="checkbox" checked> | 75 | <input class="custom-check" id="custom-check-1" type="checkbox" checked> |
@@ -75,36 +85,36 @@ | @@ -75,36 +85,36 @@ | ||
75 | 85 | ||
76 | <div class="input-blocks-wrapper"> | 86 | <div class="input-blocks-wrapper"> |
77 | <div class="input-blocks"> | 87 | <div class="input-blocks"> |
78 | - <label for="input-txt-4">Имя</label> | ||
79 | - <input class="custom-input-2" id="input-txt-4" type="text"> | 88 | + <?= $form->field($model, 'firstname')->textInput(['class'=>'custom-input-2'])?> |
80 | </div> | 89 | </div> |
81 | </div> | 90 | </div> |
82 | <div class="input-blocks-wrapper"> | 91 | <div class="input-blocks-wrapper"> |
83 | <div class="input-blocks"> | 92 | <div class="input-blocks"> |
84 | - <label for="input-txt-5">Фамилия</label> | ||
85 | - <input class="custom-input-2" id="input-txt-5" type="text"> | ||
86 | - </div> | ||
87 | - </div> | ||
88 | - <div class="input-blocks-wrapper city" > | ||
89 | - | ||
90 | - <div class="control-group"> | ||
91 | - <div id="btnClear" style=""></div> | ||
92 | - | ||
93 | - <label for="select-beast-w">Город</label> | ||
94 | - <select id="select-beast-w" placeholder=""> | ||
95 | - <option value="">Выберите город</option> | ||
96 | - <option value="4">Киев</option> | ||
97 | - <option value="1">Одесса</option> | ||
98 | - <option value="3">Харьков</option> | ||
99 | - <option value="2">Днепр</option> | ||
100 | - <option value="6">Чернигов</option> | ||
101 | - <option value="8">Черкасы</option> | ||
102 | - <option value="9">Черкасы</option> | ||
103 | - <option value="5">Черкасы</option> | ||
104 | - </select> | 93 | + <?= $form->field($model, 'lastname')->textInput(['class'=>'custom-input-2'])?> |
105 | </div> | 94 | </div> |
106 | </div> | 95 | </div> |
107 | 96 | ||
97 | + <?= | ||
98 | + $form->field($model, 'location')->widget(Select2::classname(), [ | ||
99 | + 'options' => ['placeholder' => 'Search for a city ...'], | ||
100 | + 'pluginOptions' => [ | ||
101 | + 'allowClear' => true, | ||
102 | + 'minimumInputLength' => 3, | ||
103 | + 'ajax' => [ | ||
104 | + 'url' => \yii\helpers\Url::to(['site/city']), | ||
105 | + 'dataType' => 'json', | ||
106 | + 'data' => new JsExpression('function(params) { return {q:params.term}; }') | ||
107 | + ], | ||
108 | + 'escapeMarkup' => new JsExpression('function (markup) { return markup; }'), | ||
109 | + 'templateResult' => new JsExpression('function(city) { return city.text; }'), | ||
110 | + 'templateSelection' => new JsExpression('function (city) { return city.text; }'), | ||
111 | + ], | ||
112 | + ]); | ||
113 | + ?> | ||
114 | + | ||
115 | + | ||
116 | + | ||
117 | + | ||
108 | <div class="input-blocks-wrapper city-two"> | 118 | <div class="input-blocks-wrapper city-two"> |
109 | <div class="input-blocks"> | 119 | <div class="input-blocks"> |
110 | <label for="input-txt-7">Город не в списке</label> | 120 | <label for="input-txt-7">Город не в списке</label> |