ti-enxame.com

Como mostrar e salvar um formulário do módulo, como fazemos nos componentes?

Eu exibo e salvo formulários nos componentes do Joomla MVC usando as classes jmodeladmin.

Mas como posso fazer a mesma coisa em um módulo? Como os módulos não fazem as coisas da maneira MVC que podem encontrar automaticamente a visualização, modelo e controlador correspondentes.

Então, eu acho que eu exibiria um formulário dando o que é mencionado neste post Como obter o formulário do componente no módulo? mas quando o botão de envio do formulário é clicado no módulo em questão, como posso pegar o envio e salvar usando classes jmodeladmin ??

5
dev-m

Eu acho que você precisa capturar a saída do seu módulo usando um componente. Você pode usar o JForm para gerar o formulário no seu módulo e, em seguida, ter entradas ocultas como

<form action="index.php" method="POST" name="yourform">
<input type="hidden" value="com_yourcomponent" name="option"/>
<input type="hidden" value="yourview" name="view"/>
<input type="hidden" value="savesomething" name="task"/>
<!-- ...and other input-fields with your actual form input -->
</form>

então você pode usar todos os métodos usuais para manipular a entrada do formulário ...

4
jonasfh

Você está certo de que o envio com um módulo é um pouco mais difícil porque os envios de formulários precisam ir para um URL. É mais confuso ter que escrever um componente apenas para aceitar a entrada do módulo também.

Devido a esse problema, no Joomla 3, Matt Thomas escreveu um componente chamado com_ajax. O Com_Ajax é um componente projetado para ajudar os módulos a realizar tarefas com módulos quando não havia uma URL específica para trabalhar, como você possui em um componente.

Seu caso para mim é exatamente o que o com_ajax foi projetado para ajudar a lidar. Aqui está uma documentação sobre como usá-lo:

http://docs.joomla.org/Using_Joomla_Ajax_Interface

O que você vai acabar fazendo com o seu módulo é escrever um que será executado através do URL de envio. Eu acho que você vai querer usar algum javascript para ajudar no envio do formulário, mas não tenho certeza se é completamente necessário (mas é mais sexy).

Então, no seu assistente, você configurará a classe para o módulo:

https://github.com/Joomla-Ajax-Interface/Ajax-Session-Module/blob/master/helper.php#L12

Você configurará com o método getAjax (): https://github.com/Joomla-Ajax-Interface/Ajax-Session-Module/blob/master/helper.php#L12

Para lidar com a extração no formulário, envie os dados via JFactory :: getApplication () -> input ()

Você retornará algum tipo de resposta, provavelmente algo como uma string JSON, que é uma mensagem de sucesso ou erro.

Espero que isso ajude!

3
Chad Windnagle