1 Отредактировано Илья (22.02.2017 09:39:16)

Тема: Перегрузка модуля Магазин [Решено]

Здравствуйте. Скажите, каким образом можно вносить изменения в файл orderctrl.inc.php. А именно мне нужно внести изменения вот в эту строчку. В ней мне нужно поле totalcost поменять на созданное мною.

new Filter\Type\Text('totalcost', t('Сумма'), array('showtype' => true))

Решение:
modules/config/file.inc.php

<?php
namespace Modules\Config;
use \RS\Orm\Type;


class File extends \RS\Orm\ConfigObject
{
   
    
}

modules/config/handlers.inc.php

<?php
namespace Modules\Config;

class Handlers extends \RS\Event\HandlerAbstract
{
    function init()
    {
        $this
            ->bind('controller.exec.shop-admin-orderctrl.index');
    }
    
    /**
    * @param \RS\Controller\Admin\Helper\CrudCollection $controller - объект CRUD контроллера
    */
    public static function controllerExecShopAdminOrderctrlIndex($controller)
    {

        /**
        * @var $filter RS\Html\Filter\Control
        */
        $filter = $controller['filter'];

        $lines = $filter->getContainer()->getLines();
        $lines[0]->addItem(new \RS\Html\Filter\Type\Text('new_cost', t('Сумма'), array('showtype' => true)));
    }
    
}

modules/config/module.xml

<?xml version="1.0" encoding="utf-8"?>
<config>
    <defaultValues>    
        <name multilanguage="true">Изменение в модуле магазин</name>
        <description multilanguage="true">Изменяет поле поиска в модуле магазин</description>        
        <version>1.0.0.0</version>
        <author>My mod</author>      
    </defaultValues>
</config>

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

2

Re: Перегрузка модуля Магазин [Решено]

Добрый день!

Алгоритм должен быть такой: Нужно перехватить событие controller.exec.КОРОТКОЕ_ИМЯ_КОНТРОЛЛЕРА.ИМЯ_ДЕЙСТВИЯ
в обработчике вы сможете получить объект RS\Controller\Admin\Helper\CrudCollection. Этот объект содержит коллекцию всех визуальных элементов на странице в админке. Там вы сможете найти объект фильтра и откорректировать его.

Пример использования события controller.exec.КОРОТКОЕ_ИМЯ_КОНТРОЛЛЕРА.ИМЯ_ДЕЙСТВИЯ, в схожих целях есть тут: https://readyscript.ru/text-blog/Kak-pr … adyScript/

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

3 Отредактировано Илья (21.02.2017 14:53:25)

Re: Перегрузка модуля Магазин [Решено]

Пытаюсь перегрузить поле поиска в фильтре, но получаю ошибку. Понимаю что нет класса Text, но как его добавить не могу понять, подскажите?
Fatal error: Class 'Cssfile\Config\RS\Html\Filter\Type\Text' not found in Z:\home\full.local\www\modules\cssfile\config\handlers.inc.php on line 20

class Handlers extends \RS\Event\HandlerAbstract
{
    function init()
    {
        $this->bind('controller.exec.shop-admin-orderctrl.index');
    }
    

    /**
    * @param \RS\Controller\Admin\Helper\CrudCollection $controller - объект CRUD контроллера
    */
    public static function controllerExecShopAdminOrderctrlIndex(\RS\Controller\Admin\Helper\CrudCollection $controller)
    {

        /**
        * @var $filter RS\Html\Filter\Control
        */
        $filter = $controller['filter'];

        $getcontainer = $filter->getContainer()->getLines();
        $getcontainer[0]->addItem(new RS\Html\Filter\Type\Text('new_cost', t('Сумма'), array('showtype' => true)));

        var_dump($getcontainer);
    }
    
}

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

4 Отредактировано Закусило Александр (21.02.2017 17:03:46)

Re: Перегрузка модуля Магазин [Решено]

new RS\Html\Filter\Type\Text

Поменяйте на \RS\Html\Filter\Type\Text. Вы же полный путь прописываете, а не относительный.

5

Re: Перегрузка модуля Магазин [Решено]

Блин точно спасибо.

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