registration.php 13.1 KB
<?php
    /**
     * @var $user      common\models\User
     * @var $user_info common\models\UserInfo
     */
    use yii\captcha\Captcha;
    use yii\web\View;
    use yii\widgets\ActiveForm;
    use kartik\select2\Select2;
    use yii\web\JsExpression;

?>
<div class="section-box content">
    <div class="section-box registration">
        <div class="box-wr">
            <div class="box-all">
                <div class="registration-title style">Регистрация</div>
                <div class="registration-form style">
                    <?php $form = ActiveForm::begin(); ?>

                    <div class="input-blocks-wrapper">
                        <div class="input-blocks">
                            <?= $form->field($model, 'username')
                                     ->textInput([ 'class' => 'custom-input-2' ]) ?>
                        </div>
                        <div class="input-blocks-help-wr">
                            <div class="input-blocks-help">Логин должен содержать не менее 3-х символов, начинаться с английской буквы и заканчиваться буквой или цифрой. Допускаются английские буквы, цифры и знаки 'тире', 'подчеркивание', 'точка'</div>
                        </div>
                    </div>

                    <div class="input-blocks-wrapper">
                        <div class="input-blocks">

                            <?= $form->field($model, 'password')
                                     ->passwordInput([ 'class' => 'custom-input-2' ]) ?>

                        </div>
                        <div class="input-blocks-help-wr">
                            <div class="input-blocks-help">Пароль должен содержать не менее 6-ти символов.</div>
                        </div>
                    </div>

                    <div class="input-blocks-wrapper">
                        <div class="input-blocks">
                            <?= $form->field($model, 'email')
                                     ->textInput([ 'class' => 'custom-input-2' ]) ?>
                        </div>
                        <div class="input-blocks-help-wr">
                            <div class="input-blocks-help">На этот адрес электронной почты будет отправлено уведомление о регистрации.</div>
                        </div>
                    </div>

                    <div class="who-you-are style">
                        <div class="who-you-are-title style">Кто Вы</div>
                        <div class="who-you-are-form-wr style">
                            <div class="who-you-are-form">

                                <div class="register-val-company">
                                    <?php
                                        $model->type = '2';
                                        echo $form->field($model, 'type', [ 'options' => [ 'class' => 'check-radio-wr' ] ])
                                                  ->label(false)
                                                  ->radioList([
                                                      1 => 'Частное лицо',
                                                      2 => 'Компания',
                                                  ], [
                                                      'item' => function($index, $label, $name, $checked, $value) {
                                                          $return = '<div class="custom-form-buttons">';
                                                          $return .= '<input class="custom-radio" id="custom-radio-' . $value . '" ' . ( $checked ? "checked" : "" ) . ' type="radio" name="' . $name . '" value="' . $value . '" >';
                                                          $return .= '<label for="custom-radio-' . $value . '" ><span></span>' . $label . '</label>';
                                                          $return .= '</div>';
                                                          return $return;
                                                      },
                                                  ]);
                                    ?>
                                </div>

                                <div class="check-radio-wr">
                                    <?= $form->field($model, 'is_freelancer', [
                                        'template' => "{input}\n{label}\n{error}",
                                        'options'  => [ 'class' => 'custom-form-buttons' ],
                                    ])
                                             ->label('<span></span>Я - Фрилансер')
                                             ->checkbox([
                                                 'class' => 'custom-check',
                                             ], false); ?>

                                    <?= $form->field($model, 'is_customer', [
                                        'template' => "{input}\n{label}\n{error}",
                                        'options'  => [ 'class' => 'custom-form-buttons' ],
                                    ])
                                             ->label('<span></span>Я - Заказчик')
                                             ->checkbox([
                                                 'class' => 'custom-check',
                                             ], false); ?>
                                </div>

                                <div id="register-company-block-target"></div>
                                <div class="input-blocks-wrapper register-company-block">
                                    <div class="input-blocks">
                                        <?= $form->field($model, 'name')
                                                 ->textInput([ 'class' => 'custom-input-2' ]) ?>
                                    </div>
                                </div>

                                <div class="input-blocks-wrapper">
                                    <div class="input-blocks">
                                        <?= $form->field($model, 'firstname')
                                                 ->textInput([ 'class' => 'custom-input-2' ]) ?>
                                    </div>
                                </div>
                                <div class="input-blocks-wrapper">
                                    <div class="input-blocks">
                                        <?= $form->field($model, 'lastname')
                                                 ->textInput([ 'class' => 'custom-input-2' ]) ?>
                                    </div>
                                </div>
                                <div class="input-blocks-wrapper">
                                    <div class="input-blocks">
                                        <?= $form->field($model, 'city', [
                                            'enableClientValidation' => false,
                                            'options'                => [ 'class' => 'required-no-star' ],
                                        ])
                                                 ->widget(Select2::classname(), [
                                                     'options'       => [ 'placeholder' => 'Выбор города ...' ],
                                                     'pluginOptions' => [
                                                         'allowClear'         => true,
                                                         'minimumInputLength' => 3,
                                                         'ajax'               => [
                                                             'url'      => \yii\helpers\Url::to([ 'site/city' ]),
                                                             'dataType' => 'json',
                                                             'data'     => new JsExpression('function(params) { return {q:params.term}; }'),
                                                         ],
                                                         'escapeMarkup'       => new JsExpression('function (markup) { return markup; }'),
                                                         'templateResult'     => new JsExpression('function(city) { return city.text; }'),
                                                         'templateSelection'  => new JsExpression('function (city) { return city.text; }'),
                                                     ],
                                                 ]); ?>
                                    </div>
                                </div>


                                <div class="input-blocks-wrapper city-two">
                                    <?= $form->field($model, 'city_custom', [ 'options' => [ 'class' => 'input-blocks' ] ])
                                             ->label('Город не в списке')
                                             ->textInput([ 'class' => 'custom-input-2' ]) ?>
                                    <div class="form-help-two">Если вашего города нет в списке, введите его.</div>
                                </div>
                                <div class="input-blocks-wrapper captcha-wr">
                                    <?= $form->field($model, 'verifyCode')
                                             ->widget(Captcha::className(), [
                                                 'options'  => [ 'class' => 'custom-input-2' ],
                                                 'template' => '
                                                        <div class="input-blocks-wrapper captcha">
                                                            <div class="input-blocks-captcha">
                                                                {image}
                                                            </div>
                                                        </div>
                                                        <div class="input-blocks-wrapper">
                                                            <div class="input-blocks">
                                                                <label for="signupform-verifycode">Введите проверочный код</label>
                                                                {input}
                                                            </div>
                                                        </div>
                                                        ',
                                             ])
                                             ->label(false) ?>
                                </div>
                                <div class="input-blocks-wrapper button">
                                    <button type="submit" value="Submit">Зарегистрироваться</button>
                                </div>
                            </div>
                        </div>
                    </div>

                    <?php ActiveForm::end() ?>
                </div>
            </div>
        </div>
    </div>

</div>
<?php
    $js = "
    var labelName= $('.field-signupform-firstname label').text()
    var labelLastName= $('.field-signupform-lastname label').text()
    var newLabelName= 'представителя'

    var registerValCompany =  $('.register-val-company .custom-radio:checked').attr('value');
    var regHideBlock = $('.register-company-block .form-group');
    if(registerValCompany==1) {
       $('.field-signupform-firstname label').html(labelName)
       $('.field-signupform-lastname label').html(labelLastName)
       $('.register-company-block').css('display', 'none');
       $('#w0').yiiActiveForm('remove','signupform-name');
    }
    $('.register-val-company .custom-radio').change(function(){
       var newRegisterValCompany = +$(this).attr('value');
       if(newRegisterValCompany==1){
           //human
               $('.field-signupform-firstname label').html(labelName)
               $('.field-signupform-lastname label').html(labelLastName)
                $('.register-company-block').css('display', 'none');
                $('#w0').yiiActiveForm('remove','signupform-name');
       } else {
           //company
               $('.field-signupform-firstname label').html(labelName+' '+newLabelName)
               $('.field-signupform-lastname label').html(labelLastName+' '+newLabelName)
               $('.register-company-block').css('display', 'block');
               $('#w0').yiiActiveForm('add', {
                   'container': '.field-signupform-name',
                   'error': '.help-block',
                   'id': 'signupform-name',
                   'input': '#signupform-name',
                   'name': 'name',
                   validate: function (attribute, value, messages, deferred, \$form) {yii.validation.required(value, messages, {'message':'Необходимо заполнить «Название компании».'});}

               });
       }

    })
";

    $this->registerJS($js);
?>