Registrace Souhlasím / Nesouhlasím s podmínkami
- motorcb
- Člen | 552
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
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
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
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
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
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 :(