К содержанию

Сброс пароля ошибка в шаблоне с Bootstrap

Такая ошибка возникает только с Bootstrap шаблонами
Почему то ссылка со сбросом пароля приходит на почту два раза подряд и в письме генерируется каждый раз новая ссылка и пароль.

При переходе по ссылке из письма происходит ошибка
Password Reset Information
Your password has already been reset or the link expired. If you need to reset your password again, click here.
Скрин ошибки

сниппет вызываемый на ресурсе 846
[[!ForgotPassword? 
            &resetResourceId=`948`
            &loginResourceId=`845`
            &tpl=`авториз сброс` 
            &sentTpl=`<p class="alert alert-success">Письмо отправлено</p>` 
            &sentTplType=`inline`
]]
сниппет вызываемый на ресурсе 948 (куда переходим по ссылке из письма)
[[!ResetPassword?
            &loginResourceId=`844`
]]
Как исправить то? кто нить знает?

***************
ОТВЕТ

сниппет восстановления и сброса пароля находился в стандартном шаблоне
и выводился так
[[!If?
			&subject=`[[RenderSidebar]]`
			&operator=`!empty`
			&then=`<div class="row">
				<div class="col-md-2 sidebar-offcanvas" id="sidebar" role="navigation">
					[[$Sidebar]]
				</div>
				<div class="col-md-10">
					[[*content]]
				</div>
			</div>`
			&else=`[[*content]]`
]]
оставил только
[[*content]]
письмо приходит теперь 1 раз и ссылка генерируется правильная.
Konstantin
Konstantin
23 января 2016, 12:28
modx.pro
1 967
Реклама

Комментарии: 10

Konstantin
Konstantin Проверенный
23 января 2016, 15:44
Возможная причина в чанке
&tpl=`авториз сброс`

в котором код
<input type="hidden" name="returnUrl" value="[[+loginfp.request_uri]]" />
вроде он указывает куда возвращаться после отправки email
    Konstantin
    Konstantin Проверенный
    23 января 2016, 15:57
    Оказалось что
    value="[[+loginfp.request_uri]]"
    не влияет
    Konstantin
    Konstantin Проверенный
    23 января 2016, 15:58
    Возможно нужно просто указать в форме
    <form role="form" action="[[~[[*id]]]]" method="post">
    другой action="[[~[[*id]]]]"

    =)
      Илья Уткин
      Илья Уткин Администратор
      23 января 2016, 16:36
      Скорее всего форма сброса на странице вызывается 2 раза, потому и срабатывает 2 раза.
        Konstantin
        Konstantin Проверенный
        23 января 2016, 21:28
        Все куда сложнее.
        Отключил шаблон для этих ресурсов, сделал без шаблона.
        Приходит письмо теперь 1 раз ноооооо ссылка не рабочая в ней. Не сбрасывается пароль при переходе по ссылке из письма.
        На другом контексте все тоже самое и работает.
      Konstantin
      Konstantin Проверенный
      25 января 2016, 14:32
      Я так и не понял почему в шаблоне Bootstrap происходит двойная отправка письма.
      Но проблема с неработающей ссылкой сброса пароля решилась вот таким извратом
      [[!ResetPassword:empty=`
                  [[!ForgotPassword? 
                      &resetResourceId=`[[*id]]` 
                      &tpl=`сброс` 
                      &sentTpl=`<p>Проверьте почту.</p>` 
                      &sentTplType=`inline`
                  ]]
              `]]
        Konstantin
        Konstantin Проверенный
        25 января 2016, 14:36
        ТОбишь если не указать

        [[!ResetPassword:empty=`
        то ссылка будет приходить в эмайл неправильная ((( непонятно почему
        Konstantin
        Konstantin Проверенный
        25 января 2016, 15:36
        Итак, вывод почему письмо два раза отправлялось

        сниппет восстановления и сброса пароля находился в стандартном шаблоне
        и выводился так
        [[!If?
        			&subject=`[[RenderSidebar]]`
        			&operator=`!empty`
        			&then=`<div class="row">
        				<div class="col-md-2 sidebar-offcanvas" id="sidebar" role="navigation">
        					[[$Sidebar]]
        				</div>
        				<div class="col-md-10">
        					[[*content]]
        				</div>
        			</div>`
        			&else=`[[*content]]`
        ]]
        оставил только
        [[*content]]
        письмо приходит теперь 1 раз и ссылка генерируется правильная.
          Илья Уткин
          Илья Уткин Администратор
          25 января 2016, 16:13
          А все почему? Потому что парсер MODX «работает изнутри», то есть, сначала берет [[*content]], выполняет в нём все теги, потом берет второй [[*content]], выполняет в нем все теги, только потом берет If и выводит на страницу нужный результат из полученных.
            Сергей Шлоков
            Сергей Шлоков Эксперт
            25 января 2016, 16:54
            Много раз уже говорили — не пользуйтесь вы этим If. Напишите свой сниппет, который будет возвращать нужный контент. If придуман для менеджеров без знаний php.
            Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
            10