Разделы

  
 

[[!UpdateProfile]] - смена пароля пользователя в профиле

Имеется сайт на Modx Revolution 2.1.3-pl. Используется компонент Login для регистрации и авторизации пользователей. Для обновления профиля пользователя применяется сниппет UpdateProfile.

По умолчанию в документации по данному сниппету не указано, как задавать поле для смены пароля пользователя в его профиля на странице, где вызывается [[!UpdateProfile]].

При попытке добавить поле со стандартным именем «password» для смены пароля и обновить профиль — никаких изменений не происходит, все другие значения полей (имя, адрес, телефон и т.п.) обновляются, а пароль таким же и остается, каким был указан при регистрации.

Уже 2-й день пытаюсь победить, но пока безрезультатно. Может быть у кого была схожая проблема, как её удалось преодолеть?

Привожу полностью код страницы с вызовом сниппета с учётом своих стилей (прошу сильно не пинать за громоздкость :) ). В самом конце там как раз приведены два поля: одно для смены пароля, а второе для подтверждения.



<h2>Редактирование личных данных</h2>
<p> </p>
[[!UpdateProfile? &postHooks=`clearUserCache`]]

<div class="update-profile">
    <div class="updprof-error"><b>[[+error.message]]</b></div>
    <span>[[+login.update_success:if=`[[+login.update_success]]`:is=`1`:then=`[[%login.profile_updated? &namespace=`login` &topic=`updateprofile`]]`]]</span>


 
    <form class="form" action="[[~[[*id]]]]" method="post">
        <input type="hidden" name="nospam:blank" value="" />


<div class="form-fields">
	<div class="form-fields-name">

        <div class="field-name-text"> 
        <label for="fullname">[[!%login.fullname? &namespace=`login` &topic=`updateprofile`]]</label>
        </div>
        </div>    
        
        <div class="field-block">        
        <input type="text" name="fullname" class="field-input" id="fullname" value="[[!+fullname]]" />
        </div>
</div>
        <div style="font-size:10px;height:100%;margin-left:135px;">        
        <span class="error">[[+error.fullname]]</span>
        </div>
<div style="height:20px;"></div>


<div class="form-fields">
	<div class="form-fields-name">
        
        <div class="field-name-text"> 
        <label for="email">[[!%login.email]]</label>
        </div>
        </div>
        <div class="field-block">
        <input type="text" name="email:required:email" class="field-input" id="email" value="[[!+email]]" />
        </div>
</div>
            <div style="font-size:10px;height:100%;margin-left:135px;"> 
            <span class="error">[[+error.email]]</span>
            </div>


<div style="height:20px;"></div>
        

<div class="form-fields">
	<div class="form-fields-name">
 
        <div class="field-name-text">
        <label for="phone">[[!%login.phone]]</label>
        </div>
        </div>

        <div class="field-block">
        <input type="text" name="phone" id="phone" class="field-input" value="[[!+phone]]" />
        </div>
</div>
            <div style="font-size:10px;height:100%;margin-left:135px;">
            <span class="error">[[+error.phone]]</span>
            </div>  
        

<div style="height:20px;"></div>



<div class="form-fields">
	<div class="form-fields-name">

        <div class="field-name-text">
        <label for="mobilephone">[[!%login.mobilephone]]</label>
        </div>
        </div>

        <div class="field-block">
        <input type="text" name="mobilephone" class="field-input" id="mobilephone" value="[[!+mobilephone]]" />
        </div>
</div>
        <div style="font-size:10px;height:100%;margin-left:135px;">
        <span class="error">[[+error.mobilephone]]</span>
        </div>


<div style="height:20px;"></div>

 

<div class="form-fields">
	<div class="form-fields-name">

        <div class="field-name-text">
        <label for="fax">[[!%login.fax]]</label>
        </div>    
        </div>
            <div class="field-block">
            <input type="text" name="fax" class="field-input" id="fax" value="[[!+fax]]" />
            </div>
</div>
            <div style="font-size:10px;height:100%;margin-left:135px;">
            <span class="error">[[+error.fax]]</span>
            </div>

<div style="height:20px;"></div>


<div class="form-fields">
	<div class="form-fields-name">

        <div class="field-name-text">
        <label for="fax">[[!%login.organization]]</label>
        </div>    
        </div>
            <div class="field-block">
            <input type="text" name="organization" class="field-input" id="organization" value="[[!+organization]]" size="20"/>
            </div>
</div>
            <div style="font-size:10px;height:100%;margin-left:135px;">
            <span class="error">[[+error.organization]]</span>
            </div>

<div style="height:20px;"></div>
        

<div class="form-fields">
	<div class="form-fields-name">

        <div class="field-name-text">
        <label for="address">[[!%login.address]]</label>
        </div>
        </div>  
        
        <div class="field-block">
        <input type="text" name="address" class="field-input" id="address" value="[[!+address]]" />
        </div>
</div>
        <div style="font-size:10px;height:100%;margin-left:135px;">
        <span class="error">[[+error.address]]</span>
        </div>


<div style="height:20px;"></div>
        
 


<div class="form-fields">
	<div class="form-fields-name">

        <div class="field-name-text">       
        <label for="country">[[!%login.country]]</label>
        </div>
        </div>
        
        <div class="field-block">
        <input type="text" name="country" class="field-input" id="country" value="[[!+country]]" />
        </div>
</div>

        <div style="font-size:10px;height:100%;margin-left:135px;">
        <span class="error">[[+error.country]]</span>
        </div>




<div style="height:20px;"></div>




<div class="form-fields">
	<div class="form-fields-name">

        <div class="field-name-text">
        
        <label for="city">[[!%login.city]]</label>
        </div>
        </div>
        <div class="field-block">
        <input type="text" name="city" class="field-input" id="city" value="[[!+city]]" />
        </div>
</div>
        <div style="font-size:10px;height:100%;margin-left:135px;">
        <span class="error">[[+error.city]]</span>
        </div>


<div style="height:20px;"></div>



<div class="form-fields">
	<div class="form-fields-name">

        <div class="field-name-text">
        <label for="state">[[!%login.state]]</label>
        </div>
        </div>
        <div class="field-block">
        <input type="text" name="state" class="field-input" id="state" value="[[!+state]]" size="20"/>
        </div>
</div>

        <div style="font-size:10px;height:100%;margin-left:135px;">
        <span class="error">[[+error.state]]</span>
        </div>


<div style="height:20px;"></div>




<div class="form-fields">
	<div class="form-fields-name">

        <div class="field-name-text">
        
        <label for="zip">[[!%login.zip]]</label>
        </div>
        </div>
        <div class="field-block">
        <input type="text" name="zip" class="field-input" id="zip" value="[[!+zip]]" />
        </div>
</div>

        <div style="font-size:10px;height:100%;margin-left:135px;">
        <span class="error">[[+error.zip]]</span>
        </div>


<div style="height:20px;"></div>





<div class="form-fields">
	<div class="form-fields-name">

        <div class="field-name-text">      
        <label for="website">[[!%login.website]]</label>
        </div>
        </div>
         
        <div class="field-block">
        <input type="text" name="website" class="field-input" id="website" value="[[!+website]]" />
        </div>
</div>

        <div style="font-size:10px;height:100%;margin-left:135px;">
        <span class="error">[[+error.website]]</span>
        </div>


<div style="height:20px;"></div>


<div class="form-fields">
	<div class="form-fields-name">

        <div class="field-name-text">      
        <label for="password">[[!%register.password]]</label>
        </div>
        </div>
         
        <div class="field-block">
        <input type="password" name="password" id="password" value="[[!+reg.password]]" class="field-input"/>
        </div>
</div>

        <div style="font-size:10px;height:100%;margin-left:135px;">
        <span class="error">[[!+reg.error.password]]</span>
        </div>


<div style="height:20px;"></div>


<div class="form-fields">
	<div class="form-fields-name">

        <div class="field-name-text">      
        <label for="password">[[!%register.password_confirm]]</label>
        </div>
        </div>
         
        <div class="field-block">
        <input type="password" name="password_confirm" id="password_confirm" value="[[!+reg.password_confirm]]" class="field-input"/>
        </div>
</div>

        <div style="font-size:10px;height:100%;margin-left:135px;">
        <span class="error">[[!+reg.error.password]]</span>
        </div>


<div style="height:20px;"></div>


 
        <br class="clear" />
 
        <div class="form-buttons" style="margin-left:312px;">
            <!--<input type="submit" class="submitbtn" name="login-updprof-btn" value="[[!%login.update_profile]]" />-->

            <input type="submit" class="submitbtn" name="login-updprof-btn" value="Обновить" />

        </div>
    </form>
</div>

  • 0
  • 30 января 2012, 00:43
  • AlexVah
  • 2

[Revo] UpdateProfile — профиль пользователя обновляется только после чистки кэша [Решено]

Применяю на сайте сниппет UpdateProfile. Получается вот что: при внесении изменений в профиль они появляются только после чистки кэша через админку.
Так же если изменить профиль пользователя через админку, он изменится также после чистки кэша.

Вроде бы это даже официально зарегистрированный баг bugs.modx.com/issues/5655

Можно конечно написать сниппет, который будет чистить кэш всего сайта после обновления информации о пользователе, но это по-моему неправильно, что удаляется кэш сайта если веб-юзер обновляет информацию о себе.

Подскажите, может кто сталкивался с этой проблемой и решил ее?
А может знаете способ чистить кэш только у одного юзера?

UPD: Сниппет вызывается так [[!UpdateProfile]]. Отключил кэширование страницы, сниппета, чанков, плейсхолдеров — не помогает.