да. Только не «пусто», а «не установлено».
в простой регистрации у меня не будет marketname

то есть я могу в плагине написать, что если $_POST['marketname'] пусто то выходи, иначе создать страницу?

я так понимаю условие
if (!isset($_POST['marketname'])) return;
как раз и делает эту проверку
Как вы могли заметить массив POST у нас доступен в плагине. Следовательно: в плагине делаем проверку на значение отвечающие за создание. И если стоит отказ от создания страницы, то просто выходим из него.
ага, примерно понял

тогда еще вопрос, если позволите — я хочу два варианта регистрации на сайте — просто регистрация и регистрация с созданием страницы. как плагин привязать только ко второй регистрации?
))) Вот в плагине уже можно не извращаться с запросами) В нем доступны:
$userid — id созданного пользователя.
$useremail — email созданного пользователя.
Также рекомендую сделать проверку в духе
if (!isset($_POST['marketname'])) return;
чтобы он не срабатывал если вы будете создавать пользователя в админке.
огонь!
вдела такой плагин:
if($modx->event->name=='OnWebSaveUser')
{
$marketname = ($_POST['marketname']);
$email = ($_POST['email']);
include_once(MODX_BASE_PATH.'assets/lib/MODxAPI/modResource.php');
$doc = new modResource($modx);
$doc->create(array(
'template' => 4,
'parent' => 8,
'published' => 1,
'longtitle' => $email,
'author' => $modx->db->getValue('Select id from '.$modx->getFullTableName('web_users').' order by id desc'),
'pagetitle' =>  $marketname
));
$doc->save(true, false);}


Спасибо!
Но тут можно вообще отказаться от prepare и зафигарить создание документа в плагине на событие OnWebSaveUser, где тебе будет доступен id пользователя без всяких заморочек. А marketname будет доступен в массиве $_POST)
да, это проблема

спасибо большое за подсказки все, невероятно помог!
Ну тогда возьми инкремент из таблицы)
$modx->db->getValue('SELECT `AUTO_INCREMENT` FROM  INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA = '.$modx->db->config['dbase'].' AND   TABLE_NAME   = '.$modx->getFullTableName('web_users'))

Только это все равно не решит проблему того, что страница у тебя создается до регистрации пользователя, а не после (которая может и не состоятся)
с 1 не получится. у меня сейчас действующий пользователь с id 2. если добавить 1, то будет 3 (очевидно)
но новый пользователя создается с id 23 (к примеру, всех предыдущих я удалил)
я могу создать нового руками, а вновь создаваемые будут с правильным id, но как удалять пользователей тогда, тогда не будут id биться
моно их просто блокировать конечно, но удалять как-то понятнее выглядит
Да, он действительно срабатывает ДО создания пользователя, но он все равно должен брать в таком случае последний текущий id к которому можно добавить единицу и получить что нужно.
Неа, не работает, все равно вставляется id 2

видимо id нового пользователя все же из formlistera должен передаваться

prepareProcess видимо срабатывает до создания пользователя
Крайне странно. Попробуй так…
'author' => $modx->db->getValue('Select max(id) from '.$modx->getFullTableName('web_users'))
  • avatar gregst
  • 0
данные стали добавляться, но ставится id первого пользователя

я попробовал поставить by id asc, но оно тоже не срабатывает
у меня есть один пользователь с айди 2, новый должен быть к примеру 23 (я пробовал много раз))
но в поле author проставляется 2 (неважно desc или asc)
Конечно не правильно!!!)
'author' => $modx->db->getValue('Select id from '.$modx->getFullTableName('web_users').' order by id desc')
  • avatar gregst
  • 0
$modx->db->getValue('Select id from '.$modx->getFullTableName('web_users').' order by id desc');


'author' => $modx,


не работает(

или я неправильно присваиваю переменную?
На счет второго хз, а вот на счет первого, можешь попробовать так вытянуть:
$modx->db->getInsertId();

либо тупо
$modx->db->getValue('Select id from '.$modx->getFullTableName('web_users').' order by id desc');
  • avatar gregst
  • 0
и тогда вдогонку еще вопрос — а как во вновь создаваемую страницу в TV передать id вновь созданного пользователя?
<?php
include_once(MODX_BASE_PATH."assets/lib/MODxAPI/modResource.php");
$doc = new modResource($modx);
$name = $data['marketname'];
$user = $data['id'];
$doc->create(array(
'template' => 4,
'parent' => 8,
'published' => 1,
'author' => $user,
'pagetitle' =>  $name
));
$doc->save(true, false);


так не завелось

и при этом, если использовать prepareProcess то если пользователь с такой почтой уже есть или что-то еще то сниппет все равно выполняется и страница создается, хотя пользователь еще не зарегистрирован. хотя вроде как страница должна создаваться только после валидации работы вызова formlister
  • avatar gregst
  • 0
блин, вот так и знал что упустил какую-то мелкую фигню (неправильную переменную имею ввиду)

Спасибо огромное!
Хз, у меня все чудно создалось. И да,
'pagetitle' => $name