Múltiplos botões "submit" em um formulário


Leia em menos de um minuto

A maioria das pessoas não sabe que é possível adicionar mais de um botão do tipo "submit". Mas se você precisa fazer algo como o Wordpress, pode ser uma mão na roda!

Múltiplos submits no Wordpress

Eu uso uma função em PHP que me ajuda bastante quando preciso fazer algo parecido.

<?php
function get_post_action($name)
{
    $params = func_get_args();

    foreach ($params as $name) {
        if (isset($_POST[$name])) {
            return $name;
        }
    }
}
?>

Ela é muito simples, mas extremamente útil. Basta passar os nomes possíveis dos botões e a função retornará qual a ação escolhida. Para usá-la, você pode fazer algo assim:

<?php
switch (get_post_action('save', 'submit', 'publish')) {
    case 'save':
        //save article and keep editing
        break;

    case 'submit':
        //save article and redirect
        break;

    case 'publish':
        //publish article and redirect
        break;

    default:
        //no action sent
}
?>

No seu HTML não precisa de muito. Apenas coloque o atributo name com os valores que você irá verificar.

<form method="post" action="form.php">
    <p>
        <input type="submit" name="save" value="Salvar e continuar editando" />
        <input type="submit" name="submit" value="Salvar" />
        <input type="submit" name="publish" value="Publicar" />
    </p>
</form>

E por favor, pare de mudar o atributo action do formulário através de Javascript.