Problém s mailerem a SQL (komponenta na formulář)
- sonik
- Člen | 18
Zdravím, narazil jsem na takový problém. Udělal jsem si formulář a ten ukládám do dvou různých tabulek v DB.
public function createComponentEditRequestsForm() {
$form = new Form;
$form->addTextArea('content', '')
->setHtmlAttribute('class', 'area');
$form->addText('mail', '')
->setHtmlAttribute('class', 'mailspace');
$form->addSubmit('odeslat', 'Odeslat')
->setHtmlAttribute('class', 'button');
$form->onSuccess[] = [$this, 'postFormSucceeded'];
$form->addRadioList('discipline', '', ['1' => 'ENERGETIKA',
'2' => 'DOPRAVA',
'3' => 'AUTOMOBILOVÝ PRŮMYSL',
'4' => 'KOVOVÝROBA',
'5' => 'TEXTILNÍ A ODĚVNÍ PRŮMYSL',
'6' => 'STAVEBNICTVÍ',
'7' => 'PLASTY',
'8' => 'ELEKTRICKÁ ZAŘÍZENÍ',
'9' => 'OSTATNÍ',
'10' =>'ATYPICKÉ ZKOUŠKY'])
->setHtmlAttribute('class', 'radio');
return $form;
}
public function render() {
$this->template->setFile(__DIR__ . "/EditRequestsForm.latte");
$this->template->render();
}
A zde je ten problém .. Měl by mi přijít email o nové zakázce, ve kterém by měly být základní informace. Jako číslo poptávky (id), informace o uživateli apod. Jenomže nevím jak z toho nově přidaného záznamu vytáhnout id resp. číslo poptávky a dostat ho do odeslaného emailu. Opravdu jsem momentálně ztracený :/
public function postFormSucceeded(Form $form, $values) {
$user = $this->database->table('users')->insert([
'email' => $values->mail,
]);
$this->database->table('requests')->insert([
'content' => $values->content,
'discipline_id' => $values->discipline,
'user_id'=> $user->user_id
]);
/*pro Zákazníka*/
$mail = new Message;
$mail->setFrom('-----')
->addTo($values->mail)
->setSubject('Potvrzení objednávky')
->setBody("Dobrý den, vaše poptávka byla přijata.");
$mailer = new SendmailMailer;
$mailer->send($mail);
$this->flashMessage("Poptávka byla úspěšně uložena", 'success');
/*pro Admina*/
$mail = new Message;
$mail->setFrom('---')
->addTo('---')
->setSubject('Nová objednávka')
->setBody("nová objednávka:"
. "E-mail: $values->mail ");
$mailer = new SendmailMailer;
$mailer->send($mail);
}
Prosím zkusme to bez urážek apod. Určitě v kodu budou nějaké chyby, teprve s nette začínám :)
Editoval sonik (7. 12. 2018 11:51)
- Ondřej Kubíček
- Člen | 494
ten insert ti asi vrací ActiveRow
(?)
takže pak stačí něco takového
$row = $this->database->table('requests')->insert(...);
$row->id;
$row->cislo_poptavky;
- MajklNajt
- Člen | 471
ahoj, mrkni sem https://doc.nette.org/…ase/explorer#…
Má-li tabulka definovaný primární klíč, vrací nový řádek jako objekt ActiveRow.
takže stačí upraviť nasledovne:
$row = $this->database->table('requests')->insert([
'content' => $values->content,
'discipline_id' => $values->discipline,
'user_id'=> $user->user_id
]);
a ID potom získaš napr. $row->id;