В классе RS\Http\Request есть приватное свойство get, в котором хранится локальная копия суперглобального массива GET.
В массиве get есть значения с ключами 'controller' и 'Act'.
Подскажите, откуда устанавливаются эти значения? В классе есть функция set(), которая устанавливает значение по ключу, в том числе, в массив get. Но я не могу найти, откуда она вызывается.

Пробую ставить Мегамаркет. Версия 3.0.273. На шаге 3 все заполняю верно, но RS пишет ошибку: "Не удается соедениться с базой данных. Проверьте параметры соединения."
Если в phpMyAdmin создать пустую базу с нужным именем, то установка завершается корректно, но войти по мэйлу и паролю, указанному при установке невозможно, система не находит пользователя.

Аналогично отрабатывает RS и на Маркете версии 3.0.273.

На этот же сервер тут же пробую поставить Маркет. Версия 3.0.259. Отрабатывает и впоследствии работает корректно, даже если база до установки не была создана.

Как исправить?

Структура таблиц кардинально отличается, отличается даже наименование поля id. Нужно "слить" их вместе, добавив в таблицу ks_user поля, необходимые для работы RS. Т.к. я не могу обновить эту структуру автоматически через "Исправить структуру БД", то я попробовала добавить поля вручную, но безрезультатно.
Ошибок на странице  не выдает никаких, открывается чистая пустая страница сайта. В консоли ошибка GET  [HTTP/1.0 500 Internal Server Error 6мс]. В ответе пустые необработанные данные.
Подскажите, что можно сделать?

Добрый день! У меня в разработке 2 сайта - магазин RS и социальная сеть, поставленные на отдельные домены, но использующие одну базу SQL. Планируется, что у них будет единый справочник пользователей. За его основу взят справочник соцсети (таблица ks_user). Подскажите, пожалуйста, каким образом переопределить таблицу SQL, которую использует RS, на таблицу ks_user, чтоб в ней появились необходимые отсутствующие поля. Если я в RS просто меняю имя таблицы, то RS не загружается (что, в общем-то, логично), и я не могу "Исправить структуру БД". В RS имя таблицы я пробую менять следующим образом: создаю константу KS_TABLE_PREFIX='ks_', затем в классе \RS\Orm\AbstractObject изменяю функцию:

protected function _tableName($with_quotes = true)
    {
        if (!isset(static::$table)) {
            throw new \RS\Exception(t('Не задано имя таблицы в ORM объекте %0', $this->_self_class));
        }
        $table_prefix = ($table == 'users') ? $KS_TABLE_PREFIX : $DB_TABLE_PREFIX;
        $table = ($table == 'users') ? 'user' : $table;

        $table = \Setup::$table_prefix . static::$table;
        return ($with_quotes) ? "`$table`" : $table;
    }

Права на папки 775. Дело в том, что я шаблоны нигде и не вызываю. Понять не могу, откуда он его тянет sad

user.inc.php

<?php
/**
* http://r.ru)
*
*/
namespace Users_r\Model\Orm;
use \RS\Orm\Type;

/**
* Объект - пользователь системы.
*/
class User extends \RS\Orm\OrmObject
{
    const
        SESSION_LAST_VISIT_VAR = 'last_visit',
        PASSWORD_LEN = 4,
        SUPERVISOR_GROUP = 'supervisor';
       
    protected static
        $table = "users";
   
    protected
        $default_group = 'guest', //Группа, к которой определять пользователя по умолчанию
        $authorized_user_group = 'clients', //Группа, к которой относятся все авторизованные пользователи
        $access_menu_table,
        $access_module_table,
       
        $cache_cost_id,
        $cache_mod_access,
        $cache_menu_access,
        $cache_admin_menu_access,
        $cache_allow_sites;
       
    protected $groups;
   
    function __construct($id = null, $cache = true)
    {
        $this->access_menu_table = \Setup::$DB_TABLE_PREFIX.'access_menu';
        $this->access_module_table = \Setup::$DB_TABLE_PREFIX.'access_module';       
        parent::__construct($id, $cache);
    }

    protected function _init()
    {
        parent :: _init();
       
        $for_company = array('is_company' => 1);
        $chk_depend = array(get_class($this), 'chkDepend');       
       
        $this->getPropertyIterator()->append(array(
            t('Основные'),
                    'name' => new Type\Varchar(array(
                        'maxLength' => '100',
                        'description' => t('Имя'),
                        'Checker' => array('chkEmpty', t('Укажите, пожалуйста, имя')),
                    )),
        ));
    }
}

api.inc.php

<?php
/**
* http://r.ru)
**/
namespace Users_r\Model;

class Api extends \RS\Module\AbstractModel\EntityList
{
    function __construct()
    {
        parent::__construct(new \Users_r\Model\Orm\User());
    }
}

ctrl.inc.php

<?php
/**
* http://r.ru)
*
*/

namespace Users_r\Controller\Admin;
use \RS\Html\Table\Type as TableType,
    \RS\Html\Toolbar\Button as ToolbarButton,
    \RS\Html\Toolbar,
    \RS\Html\Filter,
    \RS\Html\Table;

/**
* Контроллр пользователей
* @ingroup Users
*/
class Ctrl extends \RS\Controller\Admin\Crud
{
       
    function __construct()
    {
        parent::__construct(new \Users_r\Model\Api());
    }
   
    function helperIndex()
    {
        $helper = parent::helperIndex();
        $helper->setTopTitle(t('Пользователи'));
        $edit_pattern = $this->router->getAdminPattern('edit', array(':id' => '@id'));
        $helper->setTable(new Table\Element(array(
            'Columns' => array(
                new TableType\Checkbox('id', array('showSelectAll' => true)),           
                new TableType\Text('id', '№', array('ThAttr' => array('width' => '50'), 'Sortable' => SORTABLE_BOTH, 'CurrentSort' => SORTABLE_DESC)),
                new TableType\Text('login', t('Логин'), array('href' => $edit_pattern, 'Sortable' => SORTABLE_BOTH, 'linkAttr' => array('class' => 'crud-edit'))),
                new TableType\Text('surname', t('Фамилия'), array('href' => $edit_pattern, 'Sortable' => SORTABLE_BOTH, 'linkAttr' => array('class' => 'crud-edit'))),
                new TableType\Text('name', t('Имя'), array('href' => $edit_pattern, 'Sortable' => SORTABLE_BOTH, 'linkAttr' => array('class' => 'crud-edit'))),
                new TableType\Text('midname', t('Отчество'), array('href' => $edit_pattern, 'Sortable' => SORTABLE_BOTH, 'linkAttr' => array('class' => 'crud-edit'))),
                new TableType\Actions('id', array(
                        new TableType\Action\Edit($this->router->getAdminPattern('edit', array(':id' => '~field~'))),
                        new TableType\Action\DropDown(array(
                            array(
                                'title' => t('клонировать пользователя'),
                                'attr' => array(
                                    'class' => 'crud-add',
                                    '@href' => $this->router->getAdminPattern('clone', array(':id' => '~field~')),
                                )
                            ), 
                            array(
                                'title' => t('заказы пользователя'),
                                'attr' => array(
                                    '@href' => $this->router->getAdminPattern(false, array(':f[user_id]' => '~field~'), 'shop-orderctrl'),
                                )
                            ),
                        ))
                    ),
                    array('SettingsUrl' => $this->router->getAdminUrl('tableOptions'))
                ),
        ))));
        return $helper;
    }
}

Ответ

GET
XHR
http://ember.local/admin/users_r-ctrl/ [HTTP/1.0 503 Service Unavailable 68мс]
Ответ
<div style='background-color: #f3f3f3;'>
          <div><b>Исключение - "Unable to load template rs '/var/www/ember.local/html/modules/users_r/view/form/users_r_model_orm_user_1841709390.auto.tpl'"</b></div>
          <table valign='top'><tr><td>Код ошибки:</td><td>0</td></tr>
          <tr><td>Тип ошибки:</td><td>SmartyException</td></tr>
          <tr><td>Файл:</td><td>/var/www/ember.local/html/core/smarty/sysplugins/smarty_internal_templatebase.php</td></tr> 
          <tr><td>Строка:</td><td>127</td></tr> 
          <tr><td>Стек вызова:</td><td><pre>#0 /var/www/ember.local/html/core/rs/orm/abstractobject.inc.php(1262): Smarty_Internal_TemplateBase->fetch('/var/www/ember....')
#1 /var/www/ember.local/html/core/rs/controller/admin/helper/crudcollection.inc.php(382): RS\Orm\AbstractObject->getForm(Array, NULL, false)
#2 /var/www/ember.local/html/core/rs/controller/admin/helper/crudcollection.inc.php(658): RS\Controller\Admin\Helper\CrudCollection->getForm()
#3 /var/www/ember.local/html/cache/smarty/compile/templates_system_admin_crud_form_tpl.rs.tpl.php(84): RS\Controller\Admin\Helper\CrudCollection->offsetGet('form')
#4 /var/www/ember.local/html/core/smarty/sysplugins/smarty_internal_templatebase.php(182): content_58fb5ad4d21e05_33445197(Object(Smarty_Internal_Template))
#5 /var/www/ember.local/html/core/rs/controller/result/standart.inc.php(237): Smarty_Internal_TemplateBase->fetch('%system%/admin/...')
#6 /var/www/ember.local/html/core/rs/controller/result/standart.inc.php(261): RS\Controller\Result\Standart->getHtml()
#7 /var/www/ember.local/html/core/rs/controller/abstractcontroller.inc.php(152): RS\Controller\Result\Standart->getOutput()
#8 /var/www/ember.local/html/core/rs/controller/abstractcontroller.inc.php(134): RS\Controller\AbstractController->processResult(Object(RS\Controller\Result\Standart))
#9 /var/www/ember.local/html/core/rs/controller/abstractmodule.inc.php(237): RS\Controller\AbstractController->exec(false)
#10 /var/www/ember.local/html/core/rs/controller/admin/front.inc.php(67): RS\Controller\AbstractModule->exec(false)
#11 /var/www/ember.local/html/core/rs/controller/admin/crud.inc.php(482): RS\Controller\Admin\Front->exec(false)
#12 /var/www/ember.local/html/modules/main/controller/admin/index.inc.php(80): RS\Controller\Admin\Crud->exec()
#13 /var/www/ember.local/html/core/rs/controller/abstractcontroller.inc.php(128): Main\Controller\Admin\Index->actionIndex()
#14 /var/www/ember.local/html/core/rs/router/manager.inc.php(347): RS\Controller\AbstractController->exec()
#15 /var/www/ember.local/html/core/rs/router/manager.inc.php(368): RS\Router\Manager->applyRoute(Object(RS\Router\Route))
#16 /var/www/ember.local/html/index.php(24): RS\Router\Manager->dispatch()
#17 {main}</pre></td></tr> 
          </table>
          </div>

GET
http://ember.local/resource/img/adminstyle/node.png [HTTP/1.1 200 OK 0мс]
Заголовки
Ответ
Стек вызовов

Добрый день!
Мне необходимо переписать функционал по работе с пользователями под свои нужды. Для этого я создала новый модуль и скопировала из модуля users необходимые мне файлы (user.inc.php, api.inc.php, ctrl.inc.php), заменив namespace и переписав код по видеоуроку №8. Также полностью скопировала папку view/form. Таблица пользователей отлично показывается, сортировка и удаление работает. А вот редактирование и добавление и клонирование не хочет. В консоли отображается ошибка: Исключение - "Unable to load template rs '/var/www/ember.local/html/modules/users_r/view/form/users_r_model_orm_user_1841709390.auto.tpl'". Помогите, пожалуйста.

Существует ли автоматический подбор единиц измерения из классификатора ОКЕИ? Вручную вписывать при большом разнообразии товаров не айс. Если нет, то можно мой пост принять как пожелание к расширению функционала smile