Adicionando a barra de ferramentas padrão do joomla em uma página de visualização de componentes

10

Estou desenvolvendo um componente mvc para o joomla 2.5 e 3.Em muitos componentes, vi que eles adicionaram os botões de comando padrão do joomla, como novo, editar, publicar, lixeira, opções na parte superior da página de configurações no lado do administrador. Por exemplo. se alguém for componentes-> weblinks-> página de links, eu estou falando sobre esses botões de comando no canto superior direito.

Então, como adiciono esses botões de comando na página de configurações do meu componente? quando clicado, ele faria a ação respectiva e mostrava a visualização respectiva. Por exemplo, se eu clicar no botão "novo", ele exibirá a visualização de entrada de adição do componente mvc como está.

Então, como eu poderia adicionar botões de comando do joomla totalmente viáveis ​​na página de configurações do meu componente no lado do administrador.

dev-m
fonte

Respostas:

12

A melhor prática é criar o addToolBar()método dentro da sua classe View e, em seguida, usar a JToolBarHelperclasse para criar botões de comando:

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

Portanto, eles chamarão a tarefa / função "add" / "edit" no seu controlador especificado. Em seguida, basta chamar $this->addToolBar()o display()método do seu View .

Referência Criando uma barra de ferramentas para seu componente

Dmitry Rekun
fonte
Eu tenho apenas um arquivo controller controller.php no meu componente e dentro dele tenho uma função, function add() { JRequest::setVar('view', 'entry'); JRequest::setVar('layout', 'form'); parent::display(); }então no meu arquivo view.html.php eu adicionei JToolBarHelper :: addNewX ('controller.add'); em seguida, novo botão aparece, mas quando clicado ele não ir para a minha forma vista em vez adiciona um # para o url
dev-m
Tente omitir controller.task-JToolBarHelper::addNewX();
Dmitry Rekun
Adicionado apenas JToolBarHelper :: addNewX (); mas não funciona.
Dev-m
Então você precisa criar um controlador apropriado no controllersdiretório Consulte Adicionando ações de back-end
Dmitry Rekun
5

Você precisa garantir que a exibição que exibe os botões tenha um formulário a ser enviado. O nome do formulário deve ser adminForm. O formulário também deve ter um campo oculto chamado task e o token gerado dinamicamente. Não consigo lembrar a API do topo da minha cabeça, mas algo como JHtml::_('form.token');(alguém, por favor, corrija isso, se eu estiver enganado)

Isso faz o truque.

Mathew Lenning
fonte
O problema que eu descobri antes era que eu estava usando o nome do formulário como adminform em vez do adminForm.it parece que o tipo joomla faz distinção entre maiúsculas e minúsculas!
dev-m
É mais uma coisa de JavaScript do que específica do Joomla. Quando você clica nos botões, na verdade, está acionando uma função de formulário de envio de JS, portanto, se o formulário não puder ser encontrado, ele falhará silenciosamente.
Mathew Lenning