Финансовая поддержка VPS, бесплатные дополнения и docs Донаты оплачивают сервер и двигают бесплатные дополнения MODX и документацию. Поддержать

Всего 126 147 комментариев

Василий Наумкин
Василий Наумкин
Рано радуешься, нужно же еще форму вынести в чанк.

Указываем параметр с именем чанка:
<div id="connect_table">
	[[!resource?tpl=`myForm`]]
</div>

Прописываем обработку чанка в сниппете:
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    extract($_POST);
}
$count = $count1 + $count2 + $count3;

return $modx->getChunk($tpl, array(
	'count' => $count
));

И пишем сам чанк с формой myForm:
<form action="[[~[[*id]]]]" method="post" class="form_db">
	<input type="number" name="count1" value="5" />
	<input type="number" name="count2" value="7" />
	<input type="number" name="count3" value="2" />
	<button type="submit" name="submit">ok</button>
</form>
<p>[[+count]]</p>

Вот, примерно так все в MODX и разделяется.
Перетягин Илья
Перетягин Илья
Блин, спасибо большое, ты реально помог!

Может кому интересно или пригодиться, выложу чудо творение:
Чанк
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.0/jquery.min.js" type="text/javascript"></script>
<script type="text/javascript">
$(function(){
    $('.form_db').submit(function(e){
	e.preventDefault();
	var m_method=$(this).attr('method');
	var m_action=$(this).attr('action');
	var m_data=$(this).serialize();
		$.ajax({
			type: m_method,
			url: m_action,
			data: m_data,
			success: function(result){
				$('#connect_table').html(result);
			}
		});
	});
});    
</script>
<div id="connect_table">[[!resource]]</div>
Тут мы вызываем наш сниппет который содержит форму, а script type перехватывает его… в общем получается ajax

Код сниппета
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    extract($_POST);
}
$count = $count1 + $count2 + $count3;

$output = '<form action="[[~[[*id]]]]" method="post" class="form_db">';
$output .= '<input type="number" name="count1" value="5" />';
$output .= '<input type="number" name="count2" value="7" />';
$output .= '<input type="number" name="count3" value="2" />';
$output .= '<button type="submit" name="submit">ok</button>';
$output .= '</form>';
$output .= "<p>$count</p>";
return $output;

Тут мы имеем три поля и кнопку отправки, так же прием запроса и вычисления суммы этих трех полей.

Еще раз большое спасибо Василий!

Володя
Володя
Доброе утро!
Василий, событие да другое должно быть, мне OnHandleRequest не подойдет, скорее всего OnDocPublished (отправка нужна только один раз). Но все манипуляции только в админке происходят и каким образом мне $_REQUEST['action'] слушать?

ну слушать то я его буду в плагине, но как оно там появится то? как мне эту цепочку запустить?
Уже по разному пробовал, если на OnDocPublished ставить то зависает при ответе от yandex…
Василий Наумкин
Василий Наумкин
Да.

Плагин, например, запускается на событие OnHandleRequest:
if ($modx->event->name == 'OnHandleRequest') {
	if (!empty($_REQUEST['action']) && $_REQUEST['action'] == 'send_text') {
		// Можно работать
	}
}

Возможно, тебе больше подойдут другие события, когда веб-страница уже загружена, типа OnWebPageComplete или OnLoadWebDocument.
Василий Наумкин
Василий Наумкин
По идее, тебе нужно, чтобы отправкой на сервис и приемкой с него занимался плагин, всегда по одному адресу
http://sitename.ru/?action=send_text
Он же будет и Callback URI.

Очень похоже на HybridAuth. Не пробовал через него авторизоваться и посмотреть в сессию? Там будет токен авторизации в массиве HA:: НЕ_ПОМНЮ.
Володя
Володя
нет, это из меня фиговый объясняльщик!
Чтобы получить разрешение пользователя на выполнение действий с его личными данными, приложение должно перенаправить пользователя по следующему URL:
https://oauth.yandex.ru/authorize?response_type=<token|pre>&client_id=<client_id>[&display=popup][&state=<state>]
сначала получаем code, затем передав code получим token, при этом редиректит на Callback URI указанный при регистрации приложения.

требуемый ответ token|code, от OAuth-сервера, будет добавлен к redirect_uri

сниппет запущеный из плагина не отработает таким образом…
хотя я может чего не знаю?