Ako získať text z checkboxu z odoslaného formulára?
- Takeshi
- Člen | 596
Ahojte,
ako získam text z textboxu po odoslaní formulára?
public function createComponentTest()
{
$form = new Form;
$form->addCheckbox('chckMeno','AAA text na zobrazenie');
...
}
public function sendFormSucceeded(Form $form)
{
$value = $form->getValues();
echo ... $value['chckMeno']; .... zobrazi mi bool ... ja potrebujem zobrazit ... text/label textBoxu ... /*AAA text na zobrazenie*/
}
- Rndoom04
- Člen | 75
Ahoj. V první řadě doporučuji ten formulář lehce zjednodušit a určitě přidat ke komponentě ->setValue(); Testování odeslaných dat nedělej formou echo, ale dump(); die();.
protected function createComponentTestForm()
{
$form = new UI\Form;
$form->setMethod("POST");
$form->addCheckbox("chckMeno", "AAA text na zobrazenie")
->setValue("hodnota");
$form->addProtection('Vypršel časový limit. Odešlete prosím formulář znovu.');
/* Další komponenty a submit button */
$form->onSuccess[] = function(\Nette\Application\UI\Form $form) {
$values = $form->getValues();
if (!empty($values)) {
// Otestovat přijatá data
dump($values);
die();
}
};
return $form;
}
Editoval Rndoom04 (11. 5. 2023 19:59)
- Rndoom04
- Člen | 75
V tomto případě to můžeš udělat i bez setValue(). Ten je vhodný k tomu, když si tam chceš poslat vlastní hodnotu se kterou to chceš porovnávat, ale v hromadě případů stačí bool (true/false).
protected function createComponentTestForm()
{
$form = new UI\Form;
$form->setMethod("POST");
$form->addCheckbox("checkbox1", "Checkbox 1");
$form->addCheckbox("checkbox2", "Checkbox 2");
$form->addCheckbox("checkbox3", "Checkbox 3");
$form->addSubmit('submit', 'Odeslat');
$form->addProtection('Vypršel časový limit. Odešlete prosím formulář znovu.');
$form->onSuccess[] = function(\Nette\Application\UI\Form $form) {
$values = $form->getValues();
if (!empty($values)) {
// Otestovat přijatá data
dump($values);
die();
}
};
return $form;
}
Pokud zaškrtnu první a třetí, dostanu:
checkbox1: true
checkbox2: false
checkbox3: true
Ten, který byl zaškrtnutý, tak u něho dostanu true. U ostatních false. Podmínku pak můžeš udělat klasicky přes if:
if ($values->checkbox1) { /* Some magic */}
// nebo
if ($values->checkbox1 == true) { /* Some magic */}
Edit: Jo počkej, ty si nechceš hrát vyloženě s formulářem jako komponentou, ale s HTML zobrazením. Chápu to správně teďka? Na to můžeš použít třeba jQuery.
if ($('input.checkbox1').prop('checked')) {
/* some magic */
}
A to můžeš dát do nějakého listeneru, třeba:
$(document).on("change", "input.checkbox1", function(){ /* Some magic */ });
Editoval Rndoom04 (11. 5. 2023 23:08)
- dakur
- Člen | 493
Např. takto:
private Checkbox $checkbox;
public function createComponentTest()
{
$form = new Form;
$this->checkbox = $form->addCheckbox('chckMeno','AAA text na zobrazenie');
...
}
public function sendFormSucceeded(Form $form)
{
$value = $form->getValues();
echo ... $value['chckMeno']; .... zobrazi mi bool ... ja potrebujem zobrazit ... text/label textBoxu ... /*AAA text na zobrazenie*/
echo $this->checkbox->getLabel(); // nebo getLabelPart() nebo getLabelControl(), zkus, co to bude vracet
}
Editoval dakur (12. 5. 2023 8:30)