web-dev-qa-db-pt.com

Vários controladores no Joomla

Eu sou totalmente Joomla noob e tentando descobrir como controlar o MVC no Joomla. Eu li this "Developing a MVC Component" no tutorial básico do Joomla e entendi que o controlador principal está localizado em components/com_component/controller.php & outro arquivo é components/com_helloworld/helloworld.php que está apontando para controller.php arquivo para executar a solicitação. A questão é: eu quero criar uma nova pasta controller e colocar todos os controllers nessa pasta, como abaixo. Como fazer isso? Controllers folder

Qualquer conselho é realmente apreciado. Muito obrigado!!

4
SonDang

Eu acho que você está confundindo a finalidade do seu controlador principal/mestre (controller.php) E dos subcontroladores (tudo na pasta /controllers). Para mais informações, consulte os documentos .

O controlador principal geralmente é usado para fazer o que você menciona no seu comentário (renderize uma exibição com base no parâmetro view, geralmente especificado na URL). Em controller.php, A função que faz isso é chamada display(). Portanto, o seguinte URL:

http://example.com/index.php?option=com_mycomponent&view=test

Isso resultará na chamada da função display() em controller.php E carregará a visualização test em /views/test.

Os subcontroladores, na pasta controllers, geralmente são usados ​​para tarefas CRUD, mas podem ser chamados facilmente usando um parâmetro de URL task. Por exemplo:

http://example.com/index.php?option=com_mycomponent&task=test.process

Irá resultar na chamada da função process() em /controllers/test.php - observe que o parâmetro task é <controllerName>.<functionName>

Você verá que isso é usado muito para executar ações que não precisam de uma visualização, por exemplo, em com_content Para publicar/check-in/check-out/excluir artigos (onde o task é article.publish etc., o que significa que o controlador em controllers/article.php e a função publish(), e em vez de uma exibição dedicada, o controlador apenas redireciona de volta à exibição em lista).

Para mais informações sobre como todas as partes do Joomla MVC se encaixam, consulte este artigo da wiki .

Boa sorte!

9
codinghands

O Joomla MVC segue uma convenção de nomenclatura para escolher os nomes de arquivo e classe.

This folder holds additional controllers, if needed by the application.

   /site/controllers/{controllername}.php
   This file holds the controller class {ComponentName}Controller{ControllerName}. This class must extend the base class JController.

Você encontra mais informações no Joomla Docs, aqui

2
Anibal

Se por todos os controladores você quer dizer tudo menos controller.php, colocá-los nessa pasta funcionará perfeitamente. Você chama um controlador específico com a variável de tarefa. Por exemplo, se você quiser chamar o método save do controlador do empregador, defina a tarefa como employee.save

Eu espero que isso ajude. Feliz Joomla! Ng

1
Mathew Lenning