Контактная информация

По всем интересующим вас вопросам связывайтесь при помощи контактной информации приведенной на этой странице!

skype: metsof
email: accusser@gmail.com

В социальных сетях...

Форма обратной связи

Авторизация

Внешние базы данных CMPGenerator MODX Revolution

Сайдбар

Использование внешних баз данных

Добавлено в 1.1

Внешняя база данных означает базу данных второй или третьей стороны. Пример, который должен быть Вам знаком – база данных modx в качестве Вашей MODX db и, возможно,  у Вас есть crm для Вашей CRM db.  crm в этом случае – внешняя база данных. Начиная с версии 1.1 для создания файла Ваша внешняя база данных должна быть на той же машине, что и Ваша MODX DB и MySQL. Пользователь базы данных, использующий MODX, также должен иметь разрешение на доступ к внешней базе данных.

При запуске CMPGenerator заносит в базу данных имя и, при необходимости, префикс таблицы. Теперь, когда Вы создаете сниппет, Вам нужно будет создать новый образец xPDO, а затем вы можете вводить код как обычно (с помощью ссылки на Вашу $foreignDB вместо $MODx, конечно). См. пример кода ниже.

Базовый пример фрагмента кода

<?php
require_once $modx->getOption('core_path').'config/foreigndb_config.php';

$output = '';// this is what the snippet will return

$foreignDB = new xPDO('mysql:host=' . $foreign_database_host.';dbname='.$foreign_database_name/*.';charset='.$foreign_database_charset*/,
$foreign_database_username,
$foreign_database_password );

$package_path = $modx->getOption('core_path').'components/foreigndb/model/';
// see the scheme file and the xml model element and you will see the attribute package and that must match here
// make sure you set the prefix as empty if you don't use it
if ( !$foreignDB->addPackage('foreigndb', $package_path, '') ) {
return 'Can not load package';
}

// lets add some data!
// see the scheme file and the xml object element and you will see the attribute class and that must match here
$myRow = $foreignDB->newObject('EventName');
$data = array(
'name' => 'MODX Revolution',
'description' => 'A great CMS product...'
);
$myRow->fromArray($data);

if ( !$myRow->save() ) {
$output .= '<p>Could not create row</p>';
} else {
$output .= '<p>Created row successfully</p>';
}
// now lets show the data in a quick and dirty table:
$output .= '
<table>
<tr>
<th>ID</th>
<th>Name</th>
<th>Description</th>
</tr>';

// Note for all HTML you should be using Chunks see: http://rtfm.modx.com/display/revolution20/Chunks#Chunks-ProcessingChunkviatheAPI
/* build query */
$query = $foreignDB->newQuery('EventName');
$rows = $foreignDB->getIterator('EventName', $query);

/* iterate */
$list = array();
foreach ($rows as $row) {
// from object to array you can also do $row->get('name');
$row_array = $row->toArray();

$output .= '
<tr>
<td>'.$row_array['id'].'</td>
<td>'.$row_array['name'].'</td>
<td>'.$row_array['description'].'</td>
</tr>';
}
$output .= '
</table>';

return $output;