форма в HybridAuth

При использовании сниппета HybridAuth я создал новый шаблон, «form», cоздал к нему ресурс «Профиль», и в его содержимом сделал вызов сниппета haProfile. Отдельно я отредактировал чанк tpl.HybridAuth.logout в котором сделал кнопку «настройки» при нажатии на которую вызывается аяксом ресурс «Профиль» в котором можно редактировать информацию о пользователе. Не совсем понятно как сделать так, чтобы после нажатия кнопки «Сохранить» или «выйти» осуществлялся переход не на Профиль.html а на страницу с которой я вызывал форму?

Дело осложняется тем, что таких страниц несколько. так эти страницы — посты блога.
Герман Штайнеров
05 марта 2014, 22:51
modx.pro
978
0

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

Aртур Чикин
06 марта 2014, 15:43
0
Ты бы хоть код показал как вызываешь и что изменил.
    Герман Штайнеров
    06 марта 2014, 16:16
    0
    Чанк tpl.HybridAuth.logout:
    <div class="widget">
    	<h5 class="widgetheading">Читатель</h5>
    	<div class="pull-right"><img src="[[+gravatar]]?s=75" alt="[[+username]]" title="[[+fullname]]"  class="ha-avatar" /></div>
    
    	<h4>[[+fullname]]</h4>
    	
    	<span onclick="TINY.box.show({url:'[[++site_url]] [[~12~]]',width:300,height:450})">Настройки</span>    
    	<a href="[[+logout_url]]">Выход</a>
    	
    	</div>
    //12 — айдишник ресурса «Профиль», для вызова окон используется плагин tinybox2 www.scriptiny.com/2011/03/javascript-modal-windows/

    чанк tpl.HybridAuth.my.profile -
    <form action="[[~[[*id]]]]" method="post" class="form-horizontal" id = "profil">
    
    	<div class="control-group">
    		<label class="control-label">[[%ha.gravatar]]</label>
    		<div class="controls">
    			<img src="[[+gravatar]]?s=100" alt="[[+email]]" title="[[+email]]"  style="margin-left:40px;" />
    			
    <small>[[%ha.gravatar_desc]]</small>
    		</div>
    	</div>
    
    	<div class="control-group[[+error.username:notempty=` error`]]">
    		<label class="control-label">[[%ha.username]]</label>
    		<div class="controls">
    			<input type="text" name="username" value="[[+username]]" />
    			<span class="help-inline">[[+error.username]]</span>
    		</div>
    	</div>
    	
    	<div class="control-group[[+error.fullname:notempty=` error`]]">
    		<label class="control-label">[[%ha.fullname]]</label>
    		<div class="controls">
    			<input type="text" name="fullname" value="[[+fullname]]" />
    			<span class="help-inline">[[+error.fullname]]</span>
    		</div>
    	</div>
    	
    	<div class="control-group[[+error.email:notempty=` error`]]">
    		<label class="control-label">[[%ha.email]]</label>
    		<div class="controls">
    			<input type="text" name="email" value="[[+email]]" />
    			<span class="help-inline">[[+error.email]]</span>
    		</div>
    	</div>
    
    
    	<input type="hidden" name="hauth_action" value="updateProfile" />
    	<div class="form-actions">
    		<button  type="submit" class="btn btn-primary">[[%ha.save_profile]]</button>
    		  
    		<a href="[[++site_url]][[~[[*id]]]]" class="btn btn-danger">[[%ha.logout]]</a>
    	</div>
    </form>
    [[+success:is=`1`:then=`<div class="alert alert-block">[[%ha.profile_update_success]]</div>`]]
    [[+success:is=`0`:then=`<div class="alert alert-block alert-error">[[%ha.profile_update_error]] [[+error.message]]</div>`]]
    как было сказано выше haProfile отвечающий за профиль пользователя вызывается в содержимом ресурса Профиль. Собственно не понятно какой обработчик назначить форме
    чтобы после нажатия Сохранить меня либо перенаправило на нужную страницу откуда я вызывал форму либо окошко с формой не перезагружалось
    i33.fastpic.ru/big/2014/0306/58/34ad5cee385b680cd1a804007040db58.png вот так выглядит окно с формой. После нажатия на Сохранить загружается вся страница Профиль.html
      Aртур Чикин
      06 марта 2014, 17:41
      +1
      Либо на js обрабатывай событие submit и отправляй данные на сервер через ajax. Либо в чанке tpl.HybridAuth.my.profile измени строку кода
      <form action="[[~[[*id]]]]" method="post" class="form-horizontal" id = "profil"> на <form action="" method="post" class="form-horizontal" id = "profil">

      И еще почему у тебя в
      <span onclick="TINY.box.show({url:'[[++site_url]] [[~12~]]',width:300,height:450})">Настройки</span>
      используется конструкция
      [[~12~]] а не просто [[~12]]
        Герман Штайнеров
        06 марта 2014, 19:44
        0
        Спасибо за стоящий совет!.. А что в аджакс вызове поправить а то у меня постоянно сообщение вылезает ошибка отправки и страница перезагружается?
        вот функция которая в head записана
        function AjaxFormRequest(result_id,form_id,url) {
                        jQuery.ajax({
                            url:     url, //Адрес подгружаемой страницы
                            type:     "POST", //Тип запроса
                            dataType: "html", //Тип данных
                            data: jQuery("http://c2788.paas2.ams.modxcloud.com/blog/Профиль.html"+form_id).serialize(), 
                            success: function(response) { //Если все нормально
                            document.getElementById(result_id).innerHTML = response;
                        },
                        error: function(response) { //Если ошибка
                        document.getElementById(result_id).innerHTML = "Ошибка при отправке формы";
                        }
                     });
                }
        вот обработчик формы
        <?php

        //Если форма была отправленна, то выводим ее содержимое на экран
        if (isset($_POST[«name»])) {
        //Данные отправляются в кодировке utf-8, поэтому конвертим в cp1251
        echo «Ваше имя: ». iconv(«utf-8», «cp1251», $_POST[«username»]). "
        ";
        echo «Полное имя: ». $_POST[«fullname»]. "
        ";
        echo «Ваш имэйл: ». $_POST[«email»]. "
        ";
        }
        ?>
        вызов функции на кнопку Отправить
        <button  type="submit" class="btn btn-primary" onclick="AjaxFormRequest('okno1', 'profil', 'form.php')">[[%ha.save_profile]]</button>
        файл form.php положил в каталог вместе с хтмл страницами сайта.
          Герман Штайнеров
          06 марта 2014, 20:27
          0
          да и кстати если оставить action="" пустым то сохранение введеных данных не происходит. через админку проверял
        Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
        5