Agregar la barra de herramientas predeterminada de joomla en una página de vista de componentes

10

Estoy desarrollando un componente mvc para joomla 2.5 y 3. En muchos componentes vi que agregaban los botones de comando predeterminados de joomla como nuevo, editar, publicar, basura, opciones en la parte superior de su página de configuración en el lado del administrador. P.ej. si uno va componentes-> enlaces web-> página de enlaces, estoy hablando de esos botones de comando en la parte superior derecha.

Entonces, ¿cómo agrego esos botones de comando en la página de configuración de mi componente? cuando se hace clic en él, se realizarán las acciones correspondientes y se mostrará la vista correspondiente. Por ejemplo, si hago clic en el botón "nuevo", se mostrará la vista de agregar entrada de mi componente mvc tal como está.

Entonces, ¿cómo podría agregar botones de comando de Joomla totalmente viables en la página de configuración de mi componente en el lado del administrador.

dev-m
fuente

Respuestas:

12

La mejor práctica es crear el addToolBar()método dentro de su clase Ver y luego usar la JToolBarHelperclase para crear botones de comando:

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

Entonces estos llamarán a la tarea / función "agregar" / "editar" en su controlador especificado. Luego simplemente llame $this->addToolBar()al display()método de su Vista .

Referencia Crear una barra de herramientas para su componente

Dmitry Rekun
fuente
Solo tengo un archivo controlador controller.php en mi componente y dentro de él tengo una función, function add() { JRequest::setVar('view', 'entry'); JRequest::setVar('layout', 'form'); parent::display(); }así que en mi archivo view.html.php agregué JToolBarHelper :: addNewX ('controller.add'); luego aparece un nuevo botón, pero cuando se hace clic en él no va a mi formulario de vista, sino que agrega un # a la url
dev-m
Intenta omitir controller.task-JToolBarHelper::addNewX();
Dmitry Rekun
Solo se agregó JToolBarHelper :: addNewX (); Pero no funciona.
dev-m
Entonces necesita crear un controlador adecuado en el controllersdirectorio. Consulte Agregar acciones de back
Dmitry Rekun
5

Debe asegurarse de que la vista que muestra los botones tenga un formulario para enviar. El nombre del formulario debe ser adminForm. El formulario también debe tener un campo oculto denominado tarea y el token generado dinámicamente. No puedo recordar la API de la parte superior de mi cabeza, pero algo así como JHtml::_('form.token');(alguien corrija esto, si me equivoco)

Esto hace el truco.

Mathew Lenning
fuente
¡El problema que descubrí antes era que estaba usando el nombre del formulario como adminform en su lugar adminForm.it parece joomla tipo de mayúsculas y minúsculas!
dev-m
Es más una cosa de JavaScript que específica de Joomla. Cuando hace clic en los botones, en realidad está activando una función de envío de formulario JS, por lo que si no se puede encontrar el formulario, falla silenciosamente.
Mathew Lenning