Тема: Не расширяется ORM объект

Здравствуйте! Хочу добавить допполе к объекту "пункт Меню"

  function init()
    {
        $this->bind('orm.init.menu-menu'); //добавим css
    }
       

   
      public static function ormInitMenuMenu(\Menu\Model\Orm\Menu $orm_menu) 
        {
        $orm_menu->getPropertyIterator()->append(array(//Добавляем свойства к объекту
            t('Основные'), //Закладка, появится в форме редактирования товара
                      'css' => new Type\Varchar(array(
                      'maxLength' => '50',
                       'description' => 'Класс CSS',
                       'hint' => t('Дополнительный CSS класс для пункта меню')
                        
                    ))
       
                 ));
        }     

В таблице поле не создается, а в карточке меню оно есть.
Что-то делаю не так...

Re: Не расширяется ORM объект

А что Вы сделали, для того, чтобы оно создалось в таблице?
http://readyscript.ru/video/?t=developer

3 Отредактировано Ярослав (24.05.2016 00:19:57)

Re: Не расширяется ORM объект

Создал handlers.inc.php в папке своего модуля evaddons со следующим содержанием:

<?php
namespace evAddons\Config;
use \RS\Orm\Type;
/**
* Класс содержит обработчики событий, на которые подписан модуль

ДЛя 8 марта и темы evTheme
2016_05_06 Добавление поля css к меню
*/
class Handlers extends \RS\Event\HandlerAbstract
{
    /**
    * Добавляет подписку на события
    * 
    * @return void
    */
    function init()
    {
        $this->bind('orm.init.menu-menu'); //добавим css
    }
       

   
      public static function ormInitMenuMenu(\Menu\Model\Orm\Menu $orm_menu) 
        {
        $orm_menu->getPropertyIterator()->append(array(//Добавляем свойства к объекту
            t('Основные'), //Закладка
                      'css' => new Type\Varchar(array(
                      'maxLength' => '50',
                        'description' => 'Класс CSS',
                         'hint' => t('Дополнительный CSS класс для пункта меню')
                        
                    ))
       
                 ));
        }     
}

Досмотрел до 44 минуты) И там как раз то что надо. Создал файл install.inc.php и все заработало, спасибо! В текстовой документации не нашел данные рекомендации.

<?php
namespace evAddons\Config;

/**
* Класс отвечает за установку и обновление модуля
*/
class Install extends \RS\Module\AbstractInstall
{
function install()
    {
        
        $result = parent::install();
        if ($result) {
            $menu = new \Menu\Model\Orm\Menu();
            $menu->dbUpdate();
        }
        
        return $result;
    }
    
    /**
    * Функция обновления модуля, вызывается только при обновлении
    */
    function update()
    {
        $result = parent::update();
        if ($result) {
            $menu = new \Menu\Model\Orm\Menu();
            $menu->dbUpdate();
        }
        return $result;
    }     
}

4

Re: Не расширяется ORM объект

Вы нашли наиболее правильный вариант.

Вы также могли просто переустановить модуль Меню.
В вашем случае, в базу бы также было добавлено поле из стороннего модуля.

Повысить оценку Понизить оценку

5 Отредактировано Ярослав (24.05.2016 19:53:23)

Re: Не расширяется ORM объект

Так модуль "Меню" надо было переустанавливать, а я свой пытался. Теперь ясно.