Андрей

Андрей

С нами с 28 октября 2016; Место в рейтинге пользователей: #316
Андрей
16 декабря 2017, 14:36
0
решил сохранять этот файл на сервер, а потом по аналогии его прикреплять к письму.
Андрей
16 декабря 2017, 14:35
0
проверил — написано что последняя 3.0.4-pl, от 4 ноября.
а для Fenom нужен только pdoTools?
Андрей
16 декабря 2017, 12:20
0
Еще вопрос возник — а как с этим хуком пользователю приложить файл?
добавляю в форму
<div>
  <label for="files">Прикрепить файлы</label>
  <input type="file" name="filesToUpload" id="filesToUpload" value="[[!+fi.filesToUpload]]" />
</div>
в чанке указываю
Прикрепленный файл: [[+filesToUpload]]
но в письме в итоге так и приходит [[+filesToUpload]]
Если с тем же чанком использую стандартный сниппет FormIt email то файл нормально прикладывается.
Андрей
14 декабря 2017, 19:09
0
да, объединить сниппеты оказалось самым простым выходом из ситуации))
спасибо!
Андрей
14 декабря 2017, 18:00
1
0
[[!FormIt?
&pdfTpl=`tpl.PDF`
&hooks=`pdf, SendFilePDF, redirect`
&author=`Автор PDF`
&title=`Заголовок PDF`
&emailTpl=`sentEmailTpl`
&emailSubject=`Заявка на подключение`
&validate=`contact_name:required:minLength=^2^,
contact_email:email:required,
contact_message:required`
&store=`1`
&redirectTo=`20`
]]
сниппет pdf
<?php
$pdo = $modx->getService('pdoFetch'); 
$pdfTpl = $modx->getOption('pdfTpl', $formit->config, '', true);
$author = $modx->getOption('author', $formit->config, 'Автор', true);
$title = $modx->getOption('title', $formit->config, 'Заголовок PDF', true);
$content = $pdo->getChunk($pdfTpl, $fields);
$config = array();
$config = array_merge($config, $fields, array(
    'content' => $content,
    'author' => $author,
    'title' => $title,
));
// формируем ссылку на PDF
$hook->setValue('pdf_link', $modx->runSnippet('PdfCreate', $config)); 
return true;
и сниппет PdfCreate
<?php
$date = date('Y-m-d_H-i-s', time()) . '_' .rand(1, 100);

$corePath = $modx->getOption('pdfresource.core_path', null, $modx->getOption('core_path') . 'components/pdfresource/');
$pdfresource = $modx->getService('pdfresource', 'PDFResource', $corePath . 'model/pdfresource/', array(
    'core_path' => $corePath
));

$content = $modx->getOption('content', $scriptProperties, '', true);
$title = $modx->getOption('title', $scriptProperties, '', true);
$author = $modx->getOption('author', $scriptProperties, '', true);

$aliasPath = MODX_ASSETS_PATH . 'pdf/';
$site_url = $modx->getOption('site_url');

// настройки PDFResource (подробнее почитать здесь: http://jako.github.io/PDFResource/usage/)
$pdfresource->initPDF(array(
    'mode' => 'utf-8',
    'format' => 'A4',
    'defaultFontSize' => intval(8),
    'defaultFont' => '',
    'mgl' => intval(10),    // margin left
    'mgr' => intval(10),    // margin right
    'mgt' => intval(7),     // margin top
    'mgb' => intval(7),     // margin bottom
    'mgh' => intval(10),    // margin header
    'mgf' => intval(10),    // margin footer
    'orientation' => 'P',   // ориентация PDF
    'customFonts' => '[]',
));

$pdfresource->pdf->SetTitle($title);
$pdfresource->pdf->SetAuthor($author);
$pdfresource->pdf->SetCreator($modx->getOption('site_url'));

$pdfresource->pdf->WriteHTML($content, 2);

$file_name = $date;
$pdfresource->pdf->Output($aliasPath . $file_name . '.pdf', 'F');
return $site_url . ltrim($modx->getOption('assets_url'), '/') . 'pdf/' .$file_name. '.pdf';
в который и генерит имя файла в переменной $file_name по сути равной дате, но вот как эту переменную передать в другой сниппет я не могу понять, просто указание имени не помогает
Андрей
14 декабря 2017, 08:39
0
письмо приходит, но файл не прикладывается. наверное, потому что имя файла в переменной из другого сниппета не передается. как его можно передать? я просто писал имя переменной из сниппета где оно создается
$modx->mail->attach($modx->getOption('base_path').'assets/pdf/'.$file_name.'.pdf');
Андрей
13 декабря 2017, 22:53
0
да, на рабочей форме все заработало, спасибо.
только пришлось в чанке tpl.PDF
{if $name?}<p>Имя: {$name}</p>{/if}
заменить на
<p>Имя: [[+name]]</p>
и остальные аналогично, иначе пустой pdf генерился
Андрей
13 декабря 2017, 20:43
0
Так весь вызов на сайте) я ничего не менял. Ладно, я понял, посмотрю на ajaxform.
А с самим formIt можно по аналогии сделать, без ajax? Там у меня точно рабочий вариант формы, который уходит на почту, только в pdf не сохраняет.
Андрей
13 декабря 2017, 19:46
0
не хочет даже в папку ничего сохранять.
взял код из поста, только добавил форму такого плана
<form id="contactForm" method="post" action="[[~[[*id]]]]">
<strong>Заполните, пожалуйста, поля и нажмите кнопку "отправить".</strong>
<div>
<label for="name">Имя </label><em>(обязательно, минимум 2 символа)</em><br />
<input id="name" name="name" size="30" minlength="2" value="[[!+fi.name]]" />
<label for="name">
        [[!+fi.error.name]]
</label>
</div>
<div>
<label for="email">E-Mail </label><em>(обязательно)</em><br />
<input id="email" name="email" size="30"  value="[[!+fi.email]]" />
<label for="email">
        <span class="error">[[!+fi.error.email]]</span>
</label>
</div>

<div>
<label for="message">Примечание </label><em>(обязательно)</em><br />
<textarea id="message" name="message" cols="70" rows="7">[[!+fi.message]]</textarea>
<label for="message">
        <span class="error">[[!+fi.error.message]]</span>
</label>
</div>
<div>
<input name="submit" type="submit" value="Отправить"/>
</div>
</form>
и почту для отправки в явном виде указал
Андрей
13 декабря 2017, 16:13
0
А можно как-то приложить сам файл, а не ссылку на него?