форма в HybridAuth
При использовании сниппета HybridAuth я создал новый шаблон, «form», cоздал к нему ресурс «Профиль», и в его содержимом сделал вызов сниппета haProfile. Отдельно я отредактировал чанк tpl.HybridAuth.logout в котором сделал кнопку «настройки» при нажатии на которую вызывается аяксом ресурс «Профиль» в котором можно редактировать информацию о пользователе. Не совсем понятно как сделать так, чтобы после нажатия кнопки «Сохранить» или «выйти» осуществлялся переход не на Профиль.html а на страницу с которой я вызывал форму?
Дело осложняется тем, что таких страниц несколько. так эти страницы — посты блога.
Дело осложняется тем, что таких страниц несколько. так эти страницы — посты блога.
Комментарии: 5
Ты бы хоть код показал как вызываешь и что изменил.
Чанк tpl.HybridAuth.logout:
чанк tpl.HybridAuth.my.profile -
чтобы после нажатия Сохранить меня либо перенаправило на нужную страницу откуда я вызывал форму либо окошко с формой не перезагружалось
i33.fastpic.ru/big/2014/0306/58/34ad5cee385b680cd1a804007040db58.png вот так выглядит окно с формой. После нажатия на Сохранить загружается вся страница Профиль.html
<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
Либо на 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]]
Спасибо за стоящий совет!.. А что в аджакс вызове поправить а то у меня постоянно сообщение вылезает ошибка отправки и страница перезагружается?
вот функция которая в head записана
<?php
//Если форма была отправленна, то выводим ее содержимое на экран
if (isset($_POST[«name»])) {
//Данные отправляются в кодировке utf-8, поэтому конвертим в cp1251
echo «Ваше имя: ». iconv(«utf-8», «cp1251», $_POST[«username»]). "
";
echo «Полное имя: ». $_POST[«fullname»]. "
";
echo «Ваш имэйл: ». $_POST[«email»]. "
";
}
?>
вызов функции на кнопку Отправить
вот функция которая в 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 положил в каталог вместе с хтмл страницами сайта.
да и кстати если оставить action="" пустым то сохранение введеных данных не происходит. через админку проверял
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.