CheckboxList vypisu v emailu pouze „Array“
- Jan Kadlec
- Člen | 4
Dobry den,
omlouvam se, ale nemohu prijit kde delam chybu. Pri odeslani formulare prijde
pouze „Array“ misto vypisu co clovek vybral pomoci Checkboxu.
Tady je samotny presenter:
<?php
use Nette\Application\UI;
use Nette\Mail\Message;
use Nette\Environment;
use Nette\Mail\SendmailMailer;
class ColorsPresenter extends BasePresenter
{
public function renderDefault()
{
}
protected function createComponentColorsForm()
{
$form = new UI\Form;
$colors = array(
'r' => 'red',
'g' => 'green',
'b' => 'blue'
);
$form->addCheckboxList('colors', '', $colors);
$form->addText('name')
->getControlPrototype()->setClass('form-control');
$form->addText('email')
->addRule(UI\Form::FILLED, 'Vyplňte prosím svůj e-mail.')
->addRule(UI\Form::EMAIL, 'Vyplňte prosím email ve správném tvaru.')
->getControlPrototype()->setClass('form-control');
$form->addText('phone')
->getControlPrototype()->setClass('form-control');
$form->addTextArea('note')
->setAttribute('rows', 6)
->getControlPrototype()->setClass('form-control');
$form->addSubmit('submit', 'Odeslat')
->getControlPrototype()->setClass('btn')
->onClick = "javascript: if (typeof dataLayer === 'object') { dataLayer.push({event:'formColors',action:'submit'});}";
$form->onSuccess[] = callback($this, 'ColorsFormSubmitted');
return $form;
}
public function ColorsFormSubmitted(UI\Form $form)
{
$values = $form->getValues();
$template = $this->createTemplate();
$template->setFile(__DIR__ . '/../templates/Emails/colors.latte');
$template->name = $values['name'];
$template->email = $values['email'];
$template->phone = $values['phone'];
$template->note = $values['note'];
$template->colors = $values['colors'];
$mail = new Message;
foreach (Environment::getConfig()->formTo as $email) {
$mail->addTo($email);
}
foreach (Environment::getConfig()->formBcc as $email) {
$mail->addBcc($email);
}
$mail->setFrom(Environment::getConfig()->formFrom)
->setSubject('form: Colors')
->setHtmlBody($template);
$mailer = new SendmailMailer;
$mailer->send($mail);
$this->flashMessage('Děkujeme za odeslání formuláře.');
$this->redirect('default');
}
}
?>
A tady je vypis prijateho formulare:
------------------------------------------------------
Jméno a příjmení: Jan Novak
E-mail: test@seznam.cz
Telefon: +420123456789
Váš dotaz:
test1
Colors:
Array
------------------------------------------------------
Editoval Jan Kadlec (20. 2. 2023 1:01)
- Marek Bartoš
- Nette Blogger | 1280
Jak vypadá šablona? Na vypsání pole ti nestačí prosté
{$colors}
, musíš použít foreach a hodnoty si vypsat sám
Btw, používej prosím formátování kódu https://forum.nette.org/…v-tomto-foru#…
Editoval Marek Bartoš (19. 2. 2023 22:28)
- Jan Kadlec
- Člen | 4
omlouvam se, upravil jsem puvodni prispevek/presenter do PHP zobrazeni.
Jinak, sablona pro vypis formulare vypisuje bez problemu:
{form colorsForm}
{input name}
{input email}
{input phone}
{input note}
{input colors}
{input submit}
{/form}
a tak vypada sablona emailu:
{layout '@layout.latte'}
{block content}
<p>------------------------------------------------------</p>
<p><strong>Jméno a příjmení:</strong> {$name}<br />
<strong>E-mail:</strong> {$email}<br />
<strong>Telefon:</strong> {$phone}<br />
<strong>Váš dotaz:</strong><br />{$note}<br />
<strong>Colors:</strong><br />{$colors}</p>
<p>------------------------------------------------------</p>
{/block}
Editoval Jan Kadlec (20. 2. 2023 12:37)
- Jan Kadlec
- Člen | 4
Dobry den, dekuji za napovedu, problem je, ze jsem uplne zacatecnik, takze nevim jak mam propsat hodnoty do „foreach“, mohu vas poprosit o priklad? bude stacit pouze jedna hodnota a ostatni jiz doplnim.
- Marek Bartoš
- Nette Blogger | 1280
Je to prakticky totéž co php foreach https://latte.nette.org/cs/tags#…
{* vypíše proměnnou do Tracy baru, abys viděl, jakou přesně má $colors strukturu, můj example předpokládá array<string> *}
{dump $colors}
{foreach $colors as $color}
{$color}
{/foreach}
Btw, do .latte souborů <?php
nepatří.
Pro zvýraznění tady na fóru code block nadepiš pomocí koncovky souboru
(latte místo php) a zvýrazní se ti správně :)
- Jan Kadlec
- Člen | 4
Dobry den Marku, moooc vam dekuji, vse funguje na jednicku :-) jeste jednou velky diiikkk :-))))