Registrace Souhlasím / Nesouhlasím s podmínkami

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
motorcb
Člen | 552
+
0
-

Zdravím.
Snažím se v Nette udělat registraci. Před registrací je nutné aby uživatel souhlasil s podmínkami.
Chtěl bych proto udělat formulář, který bude mít 2 buttony.
Souhlasím s pomínkami
Nesouhlasím s podmínkami.

Pokud uživatel bude souhlasit, bude přesměrován na $this->redirect(‚User:new‘)

Jak jednoduše udělat formulář pouze se 2 tlačítkama skcí GET?

JakubTN
Bronze Partner | 49
+
0
-

Neviem ci potrebujes data po kliknuti na to ktore tlacitko aj nejak spracovavat, no ja by som skusil taketo nieco:

<?php

use Nette\Forms\Controls\SubmitButton

protected function createComponentMyForm()
{
        $form = new Form();

        ....

        $form->addSubmit('create', 'Suhlasim')
             ->onClick[] = callback($this, 'myFormAgreeSubmitted');

        $form->addSubmit('save', 'Nesuhlasim')
             ->onClick[] = callback($this, 'myFormDisagreeSubmitted');

        return $form;
}

public function myFormAgreeSubmitted(SubmitButton $button)
{
        $values = $button->form->getValues();
        ....
}

public function myFormDisagreeSubmitted(SubmitButton $button)
{
        $values = $button->form->getValues();
        ....
}

?>

Editoval JakubTN (1. 8. 2012 17:01)

Tomáš Votruba
Moderator | 1114
+
0
-

Předpokládám, že zbytek operací bude stejný stejný, nebude tedy přehlednější toto?

protected function createComponentMyForm()
{
	$form = new Nette\Application\UI\Form;
	$form->addSubmit("agree", "Souhlasím");
	$form->addSubmit("disagree", "Souhlasím");

	$form->onSubmit[] = callback($this, "myFormSent");
}

public function myFormSent($form)
{
	$values = $form->values;
	// some operations

	if ($form["agree"]->isSubmittedBy()) {
		$this->redirect("User:new");
	}
}
ic
Člen | 430
+
0
-

A uživatel může s podmínkami nesouhlasit? Protože většinou to automaticky znamená, že nemůže pokračovat.

V takovém případě tam stačí dát nějakou hvězdičku a text, že kliknutím na tlačítko ***** automaticky souhlasí s podmínkami. Nebo checkbox se někdy také používá… 2 tlačítka jsou docela nezvyklé.

motorcb
Člen | 552
+
0
-

Schmutzka:
Díky za nakopnutí.
Jen mi to nefunguje:

protected function createComponentRegistrationSubmitForm()
{
        $form = new Form();
        $form->addSubmit("agree", "Souhlasím");
        $form->addSubmit("disagree", "NEsouhlasím");

        $form->onSuccess[] = $this->registrationSubmitted;
        return $form;
}

public function registrationSubmitted($form)
{
  var_dump($form['agree']->isSubmittedBy(), $form['disagree']->isSubmittedBy());
}

Vrací: bool(false) bool(false)
Ať kliknu na cokoliv…

Nevíte někdo kde je chyba?!

motorcb
Člen | 552
+
0
-

Tak problém je v tom, že kvůli vícenásobného odeslání formuláře mám v JS tuto podmínku:

//omezení výcenásobného odeslání formuláře
$(document).ready(function()
{
    $("form").submit(function() {
        var el = $(this).find(":submit, :image");
        el.attr("disabled", "disabled");
        setTimeout(function() {
                el.attr("disabled", "");
        }, 5000);
    });

});

Ale nevím jak ji opravit aby to fungovalo :(