Trabalhando com multiplos formulários na mesma página

2,366 views
Skip to first unread message

dimaster

unread,
Feb 28, 2012, 10:03:06 AM2/28/12
to Drupal-br
Pessoal, como pode ser feito pra incluir um formulário dentro de um
formulário ou até mesmo separado mas na mesma página.

Exemplo.

Tenho um formulário (feito por módulo) só que preciso ter outras
opções dentro feita por AHAH pois tem que ser deletado dinamicamente
sem alterar o form atual, ele apenas manipula uma variavel global.

Eu não consigo retornar mais de um form pos o próprio módulo só
retorna o tipo drupal_get_form!
Preciso ter 1form principal e outros forms abaixo!

dimaster

unread,
Mar 8, 2012, 1:51:43 PM3/8/12
to Drupal-br
Pessoal ninguem sabe como deixar mais de um formulário tipo cada um
com um submit numa mesma página, isso criado em módulo?

Pedro Rocha

unread,
Mar 8, 2012, 1:57:50 PM3/8/12
to drup...@googlegroups.com
Formulário dentro de outro formulário não existe, e isso é do HTML, não do Drupal.

Vários formulários na mesma página é só criar a página e chamar cada formulário separadamente, que terão todos eles separados, sem nenhuma complicação ;)
Pessoal ninguem sabe como deixar mais de um formulário tipo cada um
com um submit numa mesma página, isso criado em módulo?

--
Ao responder um tópico, reproduza apenas a parte relevante da mensagem original, apagando demais partes e assinaturas.

Para cancelar a inscrição deste grupo: drupal-br+...@googlegroups.com
Para ver mais opções: http://groups.google.com/group/drupal-br?hl=pt-BR_BR?hl=pt-BR

dimaster

unread,
Mar 8, 2012, 2:14:48 PM3/8/12
to Drupal-br
Ta do não ter form dentro de form ja sei mas como estou criando
módulos não sei como fazer, pois o módulo retorna um unico array
$form[] que ao ser redenrizado só sai com uma estrutura <form>, então
não sei como ou retornar 2 $forms ou fazer uma chamada de outro form!

Pedro Rocha

unread,
Mar 8, 2012, 2:37:37 PM3/8/12
to drup...@googlegroups.com
Imagino que você esteja criando o hook_menu usando a page callback diretamente com a drupal_get_form, é isso?

Você pode criar uma página e chamar drupal_get_form com 2 IDs diferentes e adicionar ao output da página, sem problema algum ;)

function sua_pagina() {
 $html = '<h1>Olá</h1>';
 $html .= '<h2>Meu form 1</h2>';
 $html .= drupal_get_form('form_1');
 $html .= '<h2>Meu form 2</h2>';
 $html .= drupal_get_form('form_2');
 return $html;
}

Assim como pode usar arquivos TPL para as páginas e inserir formulários nele(recomendo, pois ai você deixa o Drupal mais ao estilo MVC)
2012/3/8 dimaster <di.m...@yahoo.com.br>
Ta do não ter form dentro de form ja sei mas como estou criando

dimaster

unread,
Mar 8, 2012, 2:41:35 PM3/8/12
to Drupal-br
É ja tinha pensado nisso mas tinha me vindo a dúvida quando ao
tratamento do form, se ele trata normalmente os hooks validade e
submit.

On Mar 8, 4:37 pm, Pedro Rocha <pedrogomesro...@gmail.com> wrote:
> Imagino que você esteja criando o hook_menu usando a page callback
> diretamente com a drupal_get_form, é isso?
>
> Você pode criar uma página e chamar drupal_get_form com 2 IDs diferentes e
> adicionar ao output da página, sem problema algum ;)
>
> function sua_pagina() {
>  $html = '<h1>Olá</h1>';
>  $html .= '<h2>Meu form 1</h2>';
>  $html .= drupal_get_form('form_1');
>  $html .= '<h2>Meu form 2</h2>';
>  $html .= drupal_get_form('form_2');
>  return $html;
>
> }
>
> Assim como pode usar arquivos TPL para as páginas e inserir formulários
> nele(recomendo, pois ai você deixa o Drupal mais ao estilo MVC)
>
> abs,
> Pedro Rocha
>
> -------------
> twitter.com/pedrogomesrochawww.pedrorocha.netwww.singleview.com.br
>
> 2012/3/8 dimaster <di.mas...@yahoo.com.br>

Pedro Rocha

unread,
Mar 8, 2012, 2:42:43 PM3/8/12
to drup...@googlegroups.com
Não tem relação alguma, na verdade. Cada formulário terá seu submit e validate separadamente, numa boa. O fato de serem ou não chamados na mesma página não irá influenciar em nada.
2012/3/8 dimaster <di.m...@yahoo.com.br>
É ja tinha pensado nisso mas tinha me vindo a dúvida quando ao

dimaster

unread,
Mar 8, 2012, 2:49:35 PM3/8/12
to Drupal-br
Mais ou menos assim, tenho como falou o menu drupal_get_form e tenho o
hook form, validade e submit.

Neste caso como ficaria esse:

function sua_pagina() {
$html = '<h1>Olá</h1>';
$html .= '<h2>Meu form 1</h2>';
$html .= drupal_get_form('form_1');
$html .= '<h2>Meu form 2</h2>';
$html .= drupal_get_form('form_2');
return $html;
}

Sendo que a estrutura do form_1 e form_2 estão nas hooks! Se eu
colocar a função que retorna a estrutura ele consegue processar as
outras validade e submit?

On Mar 8, 4:42 pm, Pedro Rocha <pedrogomesro...@gmail.com> wrote:
> Não tem relação alguma, na verdade. Cada formulário terá seu submit e
> validate separadamente, numa boa. O fato de serem ou não chamados na mesma
> página não irá influenciar em nada.
>
> abs,
> Pedro Rocha
>
> -------------
> twitter.com/pedrogomesrochawww.pedrorocha.netwww.singleview.com.br
>
> 2012/3/8 dimaster <di.mas...@yahoo.com.br>

Gedvan Dias

unread,
Mar 8, 2012, 4:51:03 PM3/8/12
to drup...@googlegroups.com
No seu hook_menu, no item que vai chamar a sua página, você NÃO vai por "drupal_get_form" em "page callback". Ao invés, você colocará o nome da sua função, no caso "sua_pagina".

Exemplo:

function mymodule_menu() {
  ...
  $items['sua-pagina'] = array(
    'title' => 'Título da página',
    'page callback' => 'sua_pagina',
    ...
  );
  ...
  return $items;
}
function sua_pagina() {
 $html = '<h2>Meu form 1</h2>';

 $html .= drupal_get_form('form_1');
 $html .= '<h2>Meu form 2</h2>';
 $html .= drupal_get_form('form_2');
 return $html;
}

Com relação ao submit e validade, nem se preocupe, pois o Drupal cuida disso. Cada form possui um form_id que é submetido junto com os dados. Daí, ele sabe qual form deve processar e qual função chamar.

Atenciosamente,
--
Gedvan P. Dias
gedvan.net / @gedvan
(83) 8823-8356

Pedro Rocha

unread,
Mar 8, 2012, 5:23:04 PM3/8/12
to drup...@googlegroups.com
Colééééé Gedvan.. driblei o time inteiro ai na hora de fazer o gol, você roubou a bola e fez! rsrs

É isso ai mesmo Di.Master. Como o Gedvan falou, o Drupal sabe que o seuform_submit e o seuform_validate estão lá, o drupal_get_form é somente para gerar o html do formulário, que você irá incluir aonde quiser.
2012/3/8 Gedvan Dias <ged...@gmail.com>

Helal Ferrari Cabral

unread,
Mar 9, 2012, 7:22:48 AM3/9/12
to drup...@googlegroups.com
O ideal mesmo era fazer uma tpl e lá chamar seu drupal get form.

Desse jeito você deixa código html dentro do seu .module :(

Falando nisso esse fds vou entregar outro post sobre drupal 7, que será sobre isso mesmo.

Esse é um bom exemplo que eu posso utilizar no meu artigo.

Abs!

--
Ao responder um tópico, reproduza apenas a parte relevante da mensagem original, apagando demais partes e assinaturas.
 
Para cancelar a inscrição deste grupo: drupal-br+...@googlegroups.com
Para ver mais opções: http://groups.google.com/group/drupal-br?hl=pt-BR_BR?hl=pt-BR



--
Helal Ferrari Cabral
Analista de sistemas

ferrar...@gmail.com
+55 48 9122 6677
www.helalferrari.com

dimaster

unread,
Mar 9, 2012, 7:45:23 AM3/9/12
to Drupal-br
Legal pessoal estou tentando aqui, o processo de renderização tudo
certo.
Ja estou achando isso uma gambiarra pro que quero fazer, é tipo um
select condicional mas neste caso é um botão com AHAH que adiciona
parametros, e
cada parametro tem seu botão pra remove-lo.
Pra adicionar tudo 100%, dentro de um único form ele adiciona os
parametros por AHAH, mas não consigo removelo, então quero fazer esse
parametro ser um form separado pra usar outro AHAH pra removelo.
É uma gambiarra muito feia, mas estou usando drupal6 e não tenho a
opção do #state!
Reply all
Reply to author
Forward
0 new messages