Formulário com dois ou mais botões de submit para actions diferentes

O Jeison Frasson escreveu (ou copiou) isso no dia 28/07/2009 Voltar

Tenho certeza que você já quis fazer um formulario assim... um simples exemplo é os famosos botões "salvar" e "salvar e continuar editando" e antes que vá me jugar esta solução NÃO usa uma gambiarra em java script

Para conseguir a mágica você ira precisar de uma função do pacote JF a função jf_form_actions, caso você não esteja utilizando segue ai a função:

 

function jf_form_actions(){
    /*
    Para usar
    switch (jf_form_actions('arg1', 'arg2', ..., 'argN')){
        case 'arg1':
        break;
       
        case 'arg2':
        break;
       
        ...
       
        case 'argN':
        break
    }   
    */

    $params = func_get_args();
   
    foreach ($params as $name) {
        if (isset($_POST[$name])) {
            unset($_POST[$name]);
            return $name;
        }
    }
}

 


Para usar sussa (giria de São Paulo para algo fácil, tranquilo de se fazer), o seu formulario ficará assim (fazendo o exemplo dos botões salvar que citei acima):

 

<form method="submit" action="pagina_de_retorno.php">
    <fieldset>
        <div>
            <label>Nome</label>
            <input type="text" name="nome" />
        </div>   
    </fieldset>

    <button type="submit" name="salvar" title="Salva e volta para lsitagem de produtos">Salvar</button>
    <button  type="submit" name="salvar-editar" title="Salva e continua nesta mesma tela">Salvar e continuar editando</button>
</form>

 

e a página de retorno fica assim:

 

<?php
$retorno = jf_form_actions('salvar', 'salvar-editar');
   
switch ($retorno){
    case 'salvar': //caso só salve
        /*************        Faz o que tiver que fazer        *************/
    break;
   
    case 'salvar-editar': //case salve e volte para editar
        /*************        Faz o que tiver que fazer        *************/
    break;
}
?>

 

Explicando

Na função jf_form_actions() você coloca o "name" dos botões (submit), a variável $retorno vai armazenar o name do qual foi clicado, trocando em miudos se clicar em salvar ele retornar salvar...

Dai é só usar um switch() (eu prefiro) ou qualquer coisa que gerencie esse retorno

bom é isso ai, bem afudê (giria do Rio Grande do sul para algo bacana, legal...) né

Comentar

Quase todos direitos reservados a Newsmade
Formulário com dois ou mais botões de submit para actions diferentes | Newsmade