addMultiUpload neodešle správný soubor

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
doby
Člen | 8
+
0
-

Dobrý den,

snažím se použít addMultiUpload, aby se soubory odeslali na email. Odeslání proběhne, ovšem na email mi přijde soubor s názvem noname a bez žádné koncovky. Zkoušel jsem hledat na internetu, ale bohužel jsem nic nenašel…

protected function createComponentCvForm()
    {
        $form = new Form;
        $form->addText('name', 'Jméno:')
            ->addRule(Form::FILLED, 'Zadejte jméno');
        $form->addText('email', 'Email:')
            ->addRule(Form::FILLED, 'Zadejte email')
            ->addRule(Form::EMAIL, 'Email nemá správný formát');
        $form->addMultiUpload('files', 'Soubory')
            ->addRule(Form::MAX_FILE_SIZE, 'Maximální velikost souboru je 1 MB.', 1000 * 1024 /* v bytech */)
            ->addRule(Form::FILLED, 'Vyberte soubor...');
        $form->addCheckbox('agree', 'Souhlasím s podmínkami ochrany osobních údajů.')
            ->addRule(Form::EQUAL, 'Je potřeba souhlasit s podmínkami', TRUE);
        $form->addSubmit('send', 'Odeslat');

        $form->onSuccess[] = $this->processCvForm;

        return $form;
    }


    /**
     * Process contact form, send message
     * @param Form
     */
    public function processCvForm(Form $form)
    {
        $values = $form->getValues(TRUE);

        $mail = new Message;
        $mail->addTo('dobrovolny.michal@gmail.com')
            ->setFrom($values['email'])
            ->setSubject('CV - '.$values['name'])
            ->setBody('Zpráva z webu ip-w.cz')
            ->addAttachment($values['files']);
        $mailer = new SendmailMailer;
        $mailer->send($mail);

        $this->flashMessage('Životopis byl odeslán.');
        $this->redirect('this');
    }
David Matějka
Moderator | 6445
+
+1
-

addAttachment chce jako prvni parametr cestu k souboru. A vysledek MultiUpload je pole s FileUpload dal si uz snad poradis :)

btw, nevytvarej instanci SendMailer rucne. Nech si injectnout IMailer

doby
Člen | 8
+
0
-

Jsem v Nette začátečník a nemám ponětí jak to napsat…ale pokud jsem to dobře pochopil, tak musím vytvořit skript, který data z formuláře file rozdělí na pole, aby byli rozeznatelný…

David Matějka
Moderator | 6445
+
0
-
public function processCvForm(Form $form)
{
	    $values = $form->getValues(TRUE);

    $mail = new Message;
    $mail->addTo('dobrovolny.michal@gmail.com')
        ->setFrom($values['email'])
        ->setSubject('CV - '.$values['name'])
        ->setBody('Zpráva z webu ip-w.cz');
		foreach ($values['files'] as $file) {
			$mail->addAttachment($file->temporaryFile);
		}
		....

Editoval matej21 (29. 1. 2015 15:43)

doby
Člen | 8
+
0
-

Díky moc funguje to skvěle :)