Problém s mailerem a SQL (komponenta na formulář)

sonik
Člen | 18
+
0
-

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
+
+2
-

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
+
+1
-

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;

sonik
Člen | 18
+
0
-

Paráda, už mi to běží. Díky moc, tohle mě vůbec nenapadlo udělat :)

sonik
Člen | 18
+
0
-

Tohle asi ještě budu muset nastudovat. Seděl jsem u toho problému celý den a ono to lze vyřešit tak snadno :)

Pavel Kravčík
Člen | 1180
+
0
-

@sonik: A oprav si ty „atipické“. :)

sonik
Člen | 18
+
0
-

Pavel Kravčík napsal(a):

@sonik: A oprav si ty „atipické“. :)

Promin, co si mám opravit? :O

Pavel Kravčík
Člen | 1180
+
0
-

@sonik: Je tam trvdé „Y“ → atypické.

sonik
Člen | 18
+
0
-

Pavel Kravčík napsal(a):

@sonik: Je tam trvdé „Y“ → atypické.

Ajo, dělal jsem vše podle návrhu, takže jsem nekoukal na pravopis :D