We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 38358
    • 4 Posts
    Всем здравствуйте.
    Читая мануал (http://rtfm.modx.com/display/revolution20/Developing+an+Extra+in+MODX+Revolution) и создавая свой компонент я столкнулся с проблемой. Дойдя до шага "Building the Query" и запуская сниппет я почаю надпись, что таблица не создана и ошибку:
    [2012-01-17 09:24:01] (ERROR @ /modx-site.ru/index.php) Could not load class: Doodle from mysql.doodle.

    Т.к. Устанавливал я на xampp, то сперва решил, что все дело в путях (т.к. даже в .htaccess переписал RewriteBase /modx-site.ru/). Заменив все пути физическим путем к файлу на диске ничего не получил. Пожалуйста, подскажите где искать ошибку,я в ModX еще не очень хорошо разбираюсь
      • 31246 ☆ A M B ☆
      • 428 Posts
      1) проверьте в БД, создана у Вас таблица doodles, т.е. ваш префикс_doodles
      2) сначало должен быть подключен класс для работы. Проерьте подключения.т.е. должен быть код. в начале сниппета
      $dood = $modx->getService('doodles','Doodles',$modx->getOption('doodles.core_path',null,$modx->getOption('core_path').'components/doodles/').'model/doodles/',$scriptProperties);
      if (!($dood instanceof Doodles)) return '';

      3) И уже проверяйте БД. (это код не для работы, а для теста)
      $m = $modx->getManager();
      $created = $m->createObjectContainer('Doodle');
      return $created ? 'Table created.' : 'Table not created.';

        Valentin Rasulov - Industrial design (Hobbies - Web Development)
        Development not standard projects on CMF MODx Revolution.
        Small sample of extensions
        • 38358
        • 4 Posts
        так все просто оказалось? В мануале написан сниппет [[!include]]:

        $m = $modx->getManager();
        $created = $m->createObjectContainer('Doodle');
        return $created ? 'Таблица создана.' : 'Таблица не создана.';
        
        return include $file;


        я добавил в него (сверху)
        $dood = $modx->getService('doodles','Doodles',$modx->getOption('doodles.core_path',null,$modx->getOption('core_path').'components/doodles/').'model/doodles/',$scriptProperties);
        if (!($dood instanceof Doodles)) return '';
        


        и таблица создалась! Супер, спасибо!

          • 31246 ☆ A M B ☆
          • 428 Posts
          и таблица создалась
          - не создалась, а вы проверили, создана она или нет.:)
            Valentin Rasulov - Industrial design (Hobbies - Web Development)
            Development not standard projects on CMF MODx Revolution.
            Small sample of extensions
            • 38358
            • 4 Posts
            не создалась, а вы проверили, создана она или нет

            Да, конечно проверял. Ее не было в базе
              • 31246 ☆ A M B ☆
              • 428 Posts
              точно - я как-то упустил этот момент. обычно я модель создаю по таблице..... интересно даже.
              т.е. создаю таблицу, как мне нужно....
              потом сниппет запускаю и генерирую xml файл по базе....
              $manager = $modx->getManager();
              $generator= $manager->getGenerator();
              $xml= $generator->writeSchema(MODX_BASE_PATH.'core/components/doodles/model/schema/doodles.mysql.schema.xml', 'doodles', 'xPDOObject', 'modx_');

              а затем уже модель для работы
              $manager = $modx->getManager();
              $generator= $manager->getGenerator();
              $generator->parseSchema(MODX_BASE_PATH.'core/components/doodles/model/schema/doodles.mysql.schema.xml',MODX_BASE_PATH.'core/components/doodles/model/');
              
              [ed. note: valikras last edited this post 14 years, 9 months ago.]
                Valentin Rasulov - Industrial design (Hobbies - Web Development)
                Development not standard projects on CMF MODx Revolution.
                Small sample of extensions
                • 38358
                • 4 Posts
                Ну поскольку это мой первый опыт по созданию компонента для данной CMS, то я действовал строго согласно инструкции:)

                Но спасибо за этот способ. Будем пробовать