Добавление панели инструментов Joomla по умолчанию на страницу просмотра компонентов

10

Я занимаюсь разработкой компонента mvc для joomla 2.5 и 3. Во многих компонентах я увидел, что они добавили стандартные команды joomla, такие как new, edit, publish, trash, options, вверху страницы настроек на стороне администратора. Например. если кто-то идет на страницу компонентов-> веб-ссылки-> ссылки, я говорю об этих кнопках в правом верхнем углу.

Итак, как мне добавить эти кнопки на странице настроек моего компонента? при щелчке он будет выполнять соответствующее действие и отображать соответствующий вид. Например, если я нажму кнопку «новый», он отобразит вид добавления записи моего компонента mvc как есть.

Итак, как я могу добавить полностью работоспособные кнопки управления Joomla на странице настроек моего компонента на стороне администратора.

DEV-м
источник

Ответы:

12

Рекомендуется создать addToolBar()метод внутри класса View, а затем использовать JToolBarHelperкласс для создания командных кнопок:

protected function addToolBar()
{
  JToolBarHelper::addNew('yourcontroller.add');
  JToolBarHelper::editList('yourcontroller.edit');
}

Таким образом, они будут вызывать задачу / функцию «добавить» / «редактировать» в указанном вами контроллере. Затем просто вызовите метод $this->addToolBar()вашего View display().

Ссылка Создание панели инструментов для вашего компонента

Дмитрий Рекун
источник
У меня есть только файл контроллера controller.php в моем компоненте, и внутри него у меня есть функция, function add() { JRequest::setVar('view', 'entry'); JRequest::setVar('layout', 'form'); parent::display(); }поэтому в моем файле view.html.php я добавил JToolBarHelper :: addNewX ('controller.add'); затем появляется новая кнопка, но при нажатии она не переходит в мою форму просмотра, вместо этого добавляет # к URL-адресу
dev-m
Попробуйте опустить controller.task-JToolBarHelper::addNewX();
Дмитрий Рекун
Добавлен только JToolBarHelper :: addNewX (); но не работает.
dev-m
Затем вам нужно создать соответствующий контроллер в controllersкаталоге. См. Добавление внутренних действий
Дмитрий Рекун
5

Вы должны убедиться, что представление, отображающее кнопки, имеет форму для отправки. Имя формы должно быть adminForm. Форма также должна иметь скрытое поле с именем task и динамически генерируемый токен. Я не могу вспомнить API с головы до головы, но что-то вроде JHtml::_('form.token');(кто-то, пожалуйста, исправьте это, если я ошибаюсь)

Это делает трюк.

Мэтью Леннинг
источник
Проблема, которую я обнаружил раньше, заключалась в том, что я использовал имя формы в качестве adminform вместо adminForm.it, кажется, что-то вроде joomla с учетом регистра!
dev-m
Это больше похоже на JavaScript, чем на Joomla. Когда вы нажимаете кнопки, вы фактически запускаете функцию отправки JS-формы, поэтому, если форма не может быть найдена, она тихо завершается сбоем.
Мэтью Леннинг