Тема: Не могу добавить кнопку в buttomToolbar

Здравствуйте. В данный момент не могу дописать модуль т.к. не могу добавить кнопку в нижний тулбар.
Пытаюсь сделать хуками через exec, но не получается т.к. добавленная кнопка перезатирается в основном хэпере.
Например хочу добавить кнопку при редактировании заказа. Создаю controller.exec.shop-admin-orderctrl.edit, далее в этой функции делаю что то типа:

public static function controllerExecShopAdminOrderCtrlEdit(\RS\Controller\Admin\Helper\CrudCollection $helper)
    {
        $helper['bottomToolbar']
            ->addItem(new ToolbarButton\Button('/asd', t('Новая кнопка')), 'newbutton');
    }

Но получается так, что сначала выполняется мой хук, потом основной метод, который все перезатирает

orderctrl.inc.php
...
$helper->setBottomToolbar($this->buttons(array('save', 'cancel')));
...

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

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

2 Отредактировано Александр (21.09.2015 13:38:48)

Re: Не могу добавить кнопку в buttomToolbar

Всё достаточно просто Вам нужен хук для метода в контроллере.
Вот пример для одного из моих модулей:

<?php
namespace ArticleToEmail\Config;

use \RS\Orm\Type,
\RS\Html\Toolbar\Button;

/**
* Класс предназначен для объявления событий, которые будет прослушивать данный модуль и обработчиков этих событий.
*/
class Handlers extends \RS\Event\HandlerAbstract
{
    function init()
    {
        $this
            ->bind('controller.exec.shop-admin-orderctrl.edit');
    }
    
    /**
    * Добавляем кнопку вниз
    * 
    * @param \RS\Controller\Admin\Helper\CrudCollection $helper
    */
    public static function controllerExecShopAdminOrderСtrlEdit(\RS\Controller\Admin\Helper\CrudCollection $helper){
        //Если редактирование происходит, то покажем кнопку
        $id = \RS\Http\Request::commonInstance()->request('id', TYPE_INTEGER, false);
        if ($id){
            /**
            * @var \RS\Html\Toolbar\Element
            */
            $bottomToolBar = $helper['bottomToolbar']; //Получаем сформированную нижнюю панель
            $router = \RS\Router\Manager::obj(); //Объект роутера
            $bottomToolBar->addItem(new Button\Save($router->getAdminUrl('send', array(), 'articletoemail-ctrl'), t('Отправить подписчикам'), array( //Добавление кнопки
                'attr'=> array(
                    'class' => 'crud-add'
                )
            )));
            $helper['bottomToolbar'] = $bottomToolBar; 
        }
        
    }
    
}