We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 51043
    • 10 Posts
    Доброго времени суток. У меня такая проблема: Я использую компонент Login и сниппет Register для регистрации. В документации описано, как можно проверить пароли на идентичность(подтверждение пароля). Вот мой код страницы регистрации:
    [[!Register?
        &submitVar=`register-btn`
        &activationResourceId=`49`
        &successMsg=`Спасибо за регистрацию. На ваш E-mail выслано письмо активации аккаунта`
        &activationEmailTpl=`Email.Activation`
        &activationEmailSubject=`Вы зарегистрированы на сайте example.com`
        &placeholderPrefix=`reg.`
        &usergroups=`Users::Member`
        &usernameField=`email`
        &passwordField=`password`
        &validate=`nospam:blank,
        name:required,
        family:required,
        email:required:email,
        password:required:minLength=^6^,
    password_confirm:required:minLength=^6^:password_confirm=^password^
    `
    ]][[!+error.message:eq=``:then=`
    <div>
    <div class="menuContent">
    <h2 class="topH2"><div class="leftLeaf"></div><p>Регистрация</p><div class="rightLeaf"></div></h2>
    <div class="regContent">
          <form action="[[~[[*id]]]]" method="POST" id="register_form">
        <div class="regItem">
            <label for="reg_name">Имя <span>*</span></label>
            <input type="text" name="name" id="reg_name" value="[[!+reg.name]]">
            <div class="errorMsg">[[!+reg.error.name]]</div>
        </div>
    <div class="regItem">
            <label for="reg_family">Фамилия <span>*</span></label>
            <input type="text" name="family" id="reg_family" value="[[!+reg.family]]">
            <div class="errorMsg">[[!+reg.error.family]]</div>
    </div>
    <div class="regItem">
            <label for="reg_date">Дата рождения</label>
            <input type="date" name="birthdate" id="reg_data">
            <div class="errorMsg"></div>
    </div>
    <div class="regItem">
            <label for="reg_email">Email <span>*</span></label>
            <input type="email" name="email" id="reg_email" value="[[!+reg.email]]">
            <div class="errorMsg">[[!+reg.error.email]]</div>
    </div>
    <div class="regItem">
            <label for="reg_password">Пароль <span>*</span></label>
            <input type="password" id="reg_password" name="password" value="[[+password]]">
            <div class="errorMsg">[[!+reg.error.password]]</div>
    </div>
    <div class="regItem">
            <label for="reg_password_confirm">Подтвердите пароль <span>*</span></label>
            <input type="password" id="reg_password_confirm" name="password_confirm" value="[[+password_confirm]]">
            <div class="errorMsg">[[!+reg.error.password_confirm]]</div>
    </div>
    <div class="regItem">
    	<input type="submit" name="register-btn" value="Регистрация">
    </div>
    </form>
    </div>
    </div>
    </div>
    `:else=`<div class="errorMsg"><p>[[!+error.message]]</p></div>`]]
    

    Атрибуты name полей input ввода пароля и подтверждения у меня соответственно password и pasword_confirm. Я проверяю их в сниппете таким образом:
    password:required:minLength=^6^,
    password_confirm:required:minLength=^6^:password_confirm=^password^

    Как я понимаю, в password_confirm можно написать как имя поля, так и конкретное значение.

    Проблема в том, что эта проверка не работает, всё время выдаёт "Пароли не совпадают". Пробовал писать свой сниппет, прикреплял через customValidators, но почему-то у значения $scriptProperties('value') длина нормальная(вводим в поле с name "password_confirm": 111111, и у нас в сниппете String(6):111111), а в $scriptProperties('param'), куда мы передаём [[!+reg.pass]] длина строки "[[!+reg.pass]]", т.е. String(14):111111 в сниппете. Проверяю через сниппет - не получается. Пробовал через фильтры вывода передавать в свой сниппет проверки либо true, если :eq([[!+reg.pass]]), либо сообщение "Пароли не совпадают". Тоже самое.