Новости Joomla

0 Пользователей и 1 Гость просматривают эту тему.
  • 1 Ответов
  • 2780 Просмотров
*

Magl

  • Захожу иногда
  • 85
  • 3 / 0
Доброго времени суток !
Надо создать форму после заполнения которой при нажатии на "Отправить" у человека начинается скачивание файл, а форма отправляется админу.
Заранее спасибо!
*

Groweed

  • Новичок
  • 1
  • 0 / 0
Re: Скачка файла при откравки формы ?
« Ответ #1 : 17.12.2012, 10:33:14 »
Самому нужна была такая тема, реализовал немного криво, но кое что есть.Требуется доработка, т.к. php я особо не знаю.
Идём в папку, открываем следующий файл
Z:\home\localhost\www\components\com_breezingforms\facileforms.process.php
Там ищем строчку // sendMail.Функция exppdf. В этой функции выполняется генерация самого pdf файла со всем необходимым нам содержимым.

Код
    function exppdf($filter = array(), $mailback = false) {
        global $ff_compath;

        $file = JPATH_SITE . '/administrator/components/com_breezingforms/pdftpl/' . $this->formrow->name . '_pdf_attachment.php';
        if (!JFile::exists($file)) {
            $file = JPATH_SITE . '/administrator/components/com_breezingforms/pdftpl/pdf_attachment.php';
        }

        if ($mailback) {
            $mb_file = JPATH_SITE . '/administrator/components/com_breezingforms/pdftpl/' . $this->formrow->name . '_pdf_mailback_attachment.php';
            if (JFile::exists($mb_file)) {
                $file = $mb_file;
            } else {
                $mb_file = JPATH_SITE . '/administrator/components/com_breezingforms/pdftpl/pdf_mailback_attachment.php';
                if (JFile::exists($mb_file)) {
                    $file = $mb_file;
                }
            }
        }

        $processed = array();
        $xmldata = array();

        $_xmldata = $this->xmldata;
        if ($mailback) {
            $_xmldata = $this->mb_xmldata;
        }

        foreach ($_xmldata as $data) {
            if (!in_array($data[_FF_DATA_NAME], $filter) && !in_array($data[_FF_DATA_NAME], $processed)) {
                $xmldata[] = $data;
                //$processed[] = $data[_FF_DATA_NAME];
            }
        }

        ob_start();
        require($file);
        $c = ob_get_contents();
        ob_end_clean();

        require_once(JPATH_SITE . '/administrator/components/com_breezingforms/libraries/tcpdf/tcpdf.php');
        $pdf = new TCPDF();
        $pdf->setPrintHeader(false);
        $pdf->AddPage();
        $pdf->writeHTML($c);
        mt_srand();
        $pdfname = $ff_compath . '/exports/ffexport-pdf-' . date('YmdHis'). '-' . mt_rand(0, mt_getrandmax()). '.pdf';
        $pdf->lastPage();
       $pdf->Output($pdfname, "F");
        return $pdfname;
    }

Как берутся данные с страницы?
На сколько я понял всё берётся функцией ob_get_contents(), из этих данных формируется наш pdf файл. В функцию exppdf нужно вставить следующий код
Цитировать
///////////////////////////////////////////////////////
        $createpdf = new TCPDF();
        $createpdf->SetFont('freesansi', '', 15);  //Строку эту можно и убрать, но тогда у Вас не будет отображать русский шрифт (
        $createpdf->setPrintHeader(false);     
        $createpdf->AddPage();
        $createpdf->writeHTML($c);             
        $createpdf->Output();                   
///////////////////////////////////////////////////////

В итоге, функция exppdf выглядит у меня следующим образом:
Цитировать
// sendMail


    function exppdf($filter = array(), $mailback = false) {
        global $ff_compath;

        $file = JPATH_SITE . '/administrator/components/com_breezingforms/pdftpl/' . $this->formrow->name . '_pdf_attachment.php';
        if (!JFile::exists($file)) {
            $file = JPATH_SITE . '/administrator/components/com_breezingforms/pdftpl/pdf_attachment.php';
        }

        if ($mailback) {
            $mb_file = JPATH_SITE . '/administrator/components/com_breezingforms/pdftpl/' . $this->formrow->name . '_pdf_mailback_attachment.php';
            if (JFile::exists($mb_file)) {
                $file = $mb_file;
            } else {
                $mb_file = JPATH_SITE . '/administrator/components/com_breezingforms/pdftpl/pdf_mailback_attachment.php';
                if (JFile::exists($mb_file)) {
                    $file = $mb_file;
                }
            }
        }

        $processed = array();
        $xmldata = array();

        $_xmldata = $this->xmldata;
        if ($mailback) {
            $_xmldata = $this->mb_xmldata;
        }

        foreach ($_xmldata as $data) {
            if (!in_array($data[_FF_DATA_NAME], $filter) && !in_array($data[_FF_DATA_NAME], $processed)) {
                $xmldata[] = $data;
                //$processed[] = $data[_FF_DATA_NAME];
            }
        }

        ob_start();
        require($file);
        $c = ob_get_contents();
        ob_end_clean();

        require_once(JPATH_SITE . '/administrator/components/com_breezingforms/libraries/tcpdf/tcpdf.php');
        $pdf = new TCPDF();
        $pdf->setPrintHeader(false);
        $pdf->AddPage();
        $pdf->writeHTML($c);
///////////////////////////////////////////////////////
        $createpdf = new TCPDF();
        $createpdf->SetFont('freesansi', '', 15);   
        $createpdf->setPrintHeader(false);     
        $createpdf->AddPage();
        $createpdf->writeHTML($c);             
        $createpdf->Output();                   
///////////////////////////////////////////////////////       
        mt_srand();
        $pdfname = $ff_compath . '/exports/ffexport-pdf-' . date('YmdHis'). '-' . mt_rand(0, mt_getrandmax()). '.pdf';
        $pdf->lastPage();
        $pdf->Output($pdfname, "F");
        return $pdfname;
    }

Что мы имеем:
После тогда как мы на кнопку submit настроим отправку сообщений на мыло админа, автоматически после заполнения формы будет открываться pdf файл который можно будет сохранить.
Минусы:
-открывается в том же окне, хотелось чтобы в новом открывалось.
-Вставить бы этот код куда нибудь в другое место, чтобы его можно было прикрепить на любую кнопку, потому что мне допустим не нужна отправка сообщений =)
-Мне не нравится, что документ формируется из данных которые берутся функцией  ob_get_contents(). А эта функция берёт абсолютно всё.И данные браузера айпишника и т.д. Как сформировать свой документ, с нужными данными?
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Пропадают символы "_" и "-" в имени файла при закачке через форму

Автор busik

Ответов: 0
Просмотров: 2065
Последний ответ 17.04.2018, 21:38:11
от busik
Изменить надпись после отправки Формы

Автор warlocksp

Ответов: 4
Просмотров: 5388
Последний ответ 26.05.2016, 16:56:56
от bgg87
Автоматическая прокрутка страницы после отправки формы

Автор Mihas

Ответов: 0
Просмотров: 2180
Последний ответ 29.07.2015, 15:54:53
от Mihas
Ошибка 1146 при отправке с формы. Сообщение не уходит

Автор Kaktus_0,7

Ответов: 6
Просмотров: 2054
Последний ответ 30.11.2014, 23:05:04
от Kaktus_0,7
Как загрузить название товара из каталога в поле формы?

Автор kantimota

Ответов: 1
Просмотров: 2276
Последний ответ 03.07.2013, 14:25:46
от Cergunya