We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 31309
    • 70 Posts
    После создания нового документа в админке, при записи(save) в отсылаемом POST запросе поле id пустое, это значит что если я повесился на onDocFormSave то вытащить id вновь созданного документа не могу. При редактировании все нормально. Вопрос если это баг или фича? И если не баг, то как можно получить этот id-шник?
      • 31268
      • 111 Posts
      про MySQL слышали?
        Discere ne cesses
        • 31309
        • 70 Posts
        Нет, что это? плагин для modx?
          • 28814 ☆ A M B ☆
          • 1,086 Posts
          Мда. Разговор слепого с глухим smiley
          Нет, что это? плагин для modx?
          Сдается мне, это Вы так пошутили smiley
          Подробнее опишите, что Вы делаете и для чего. Авось тогда и вразумительные ответы появятся.
            Разработка сайтов и программных модулей на MODX.
            Опыт работы на MODx с 2005 года. Высокое качество.
            Компания Baltic Design Colors: http://www.bdcolors.ru.
            • 31309
            • 70 Posts
            Структура такая, есть каталог продукции, есть список поставщиков. У продукта есть tv , выпадающий список, со списком поставщиков. Значения в tv формируются динамически, т.е. при добавлении поставщика, его тайтл добавляется в тот самый tv в продукте (техническая реализация - каждый раз пробегаюсь по всему списку, формирую стринг типа "поставщик1||поставщик2||поставщик3...."). Для этого мне надо проверить родительскую папку, если добавляется именно поставщик, для родительской папки мне нужен ID этого документа.. т.е. такая штука:
            switch($e->name) {
              case 'OnDocFormSave':
            
                     $myId = $_POST['id'];
                     $myParent = $modx->getParent($myId,1,'id');
                     $myParentId = (int)$myParent['id'];
                     if($myParentId!=35) {return;} /*Factories folder*/

            Но на момент события OnDocFormSave, в POST[’id’] пусто.. Нашел решение этой штуке через @SELECT, но сам вопрос еще актуален, кто и когда дает новому документу его ID?
              • 28814 ☆ A M B ☆
              • 1,086 Posts
              Quote from: variable at May 29, 2009, 08:39 PM

              Нашел решение этой штуке через @SELECT
              Именно! И больше ничего не потребуется. Как-то писали на modx.ru об этом: http://modx.ru/blog/249/.
              Quote from: variable at May 29, 2009, 08:39 PM

              но сам вопрос еще актуален, кто и когда дает новому документу его ID?
              Вообще-то новый ID генерируется автоматически при добавлении нового документа в БД smiley
              Есть такая штука в БД - AUTOINCREMENT называется. Именно это, вероятно, имел ввиду Vampire.

              В общих случаях Вам не требуется знать этот ID.
              Если используете TV, система сама вставит нужные сопоставления ID документа и значения TV в БД.
              Вы слишком перемудрили на самом деле.

              Ну а если уж очень обязательно знать последний вставленный ID, есть такая функция в PHP mysql_insert_id.
                Разработка сайтов и программных модулей на MODX.
                Опыт работы на MODx с 2005 года. Высокое качество.
                Компания Baltic Design Colors: http://www.bdcolors.ru.
                • 31309
                • 70 Posts
                Спасибо за развернутый ответ, про autoincrement я не подумал.
                  • 31136
                  • 72 Posts
                  Quote from: variable at May 29, 2009, 08:39 PM

                  switch($e->name) {
                    case 'OnDocFormSave':
                  
                           $myId = $_POST['id'];
                           $myParent = $modx->getParent($myId,1,'id');
                           $myParentId = (int)$myParent['id'];
                           if($myParentId!=35) {return;} /*Factories folder*/

                  Но на момент события OnDocFormSave, в POST[’id’] пусто.. Нашел решение этой штуке через @SELECT, но сам вопрос еще актуален, кто и когда дает новому документу его ID?

                  Использование $_POST в данном случае - не самое лучшее решение. В MODx для таких случаев предусмотрен массив $params для возникшего события, из которого можно считать ID документа и прочие полезные сведения.

                  Попробуйте так:
                  switch($e->name) {
                    case 'OnDocFormSave':
                  
                           $myId = $e->params['id']; //$_POST['id'];
                           $myParent = $modx->getParent($myId,1,'id');
                           $myParentId = (int)$myParent['id'];
                           if($myParentId!=35) {return;} /*Factories folder*/
                    • 31268
                    • 111 Posts
                    Quote from: Fuzzy at May 30, 2009, 12:22 AM

                    Вообще-то новый ID генерируется автоматически при добавлении нового документа в БД smiley
                    Есть такая штука в БД - AUTOINCREMENT называется. Именно это, вероятно, имел ввиду Vampire.
                    rolleyes
                    Виноват - был не сдержан smiley
                    В момент дэдлайна был скуп на развернутые комментарии.
                    Думал, что иронии насчет MySQL будет достаточно, чтобы понять в какую сторону смотреть.
                    (Оказалось - не совсем cool )
                      Discere ne cesses