Jump to content
покупайте без комиссии
Search In
  • More options...
Find results that contain...
Find results in...
  • Sign Up

Как создать pdf c помощью библиотеки Dompdf ?


Recommended Posts

В контроллере я добавила функцию и попыталась html с данными из view сделать pdf, но ничего не выходит. Подскажите что я делаю не так?

public function pdf_invoice($html){
        $dompdf = new Dompdf();
        $dompdf->loadHtml($html, 'UTF-8');
        $dompdf->setPaper('A4', 'portrait');
        $dompdf->render();

        // Вывод файла в браузер:
        $dompdf->stream('my.pdf',array('Attachment'=>0));
    }
public function index() {
    ...
    $this->pdf_invoice($this->load->view('extension/payment/invoice', $data));
}

 

Link to post
Share on other sites

Библиотеку подключили в контроллере ?

require_once('где она у вас ... /dompdf/autoload.inc.php');

Link to post
Share on other sites
12 минут назад, series9 сказал:

Библиотеку подключили в контроллере ?

require_once('где она у вас ... /dompdf/autoload.inc.php');

Да, подключала, работает, но только если просто создать html, а я хотела чтобы с view взять html

$html = '<html>
  <body>
    <div>Привет</div>
  </body>
</html>';

 

Link to post
Share on other sites

Я нашла в моем коде ошибку,  не связанную с библиотекой, так что вопрос закрыт.

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Similar Content

    • By Alexandr15
      Подскажите пожалуйста как в opencart 3 в стандартном (базовом) модуле featured вывести опции товаров
      В файл: modification\catalog\controller\extension\module\featured.php
      добавил код:
      $options = array(); foreach ($this->model_catalog_product->getProductOptions($result['product_id']) as $option) { if($option['required']){ $product_option_value_data = array(); foreach ($option['product_option_value'] as $option_value) { if (!$option_value['subtract'] || ($option_value['quantity'] >= 0)) { $product_option_value_data[] = array( 'product_option_value_id' => $option_value['product_option_value_id'], 'option_value_id' => $option_value['option_value_id'], 'name' => $option_value['name'], 'image' => $this->model_tool_image->resize($option_value['image'], 50, 50), 'quantity' => $option_value['quantity'], 'price_prefix' => $option_value['price_prefix'] ); } } $options[] = array( 'product_option_id' => $option['product_option_id'], 'product_option_value' => $product_option_value_data, 'option_id' => $option['option_id'], 'name' => $option['name'], 'type' => $option['type'], 'value' => $option['value'], 'required' => $option['required'] ); } } Также в $data['products'][] = array(
      добавил:
      'options' => $options, Для вывода в файле: template\extension\module\featured.twig
      в карточку товара добавил код:
      {% if product.options %} {% for option in product.options %} {% if option.type == 'radio' %} <div class="groupOptionWrap {% if option.required %} required {% endif %}"> <div id="input-option{{ option.product_option_id }}" class='groupOptionElements'> {% for option_value in option.product_option_value %} {% if option_value.quantity == "0" %} <div class="groupOption groupOptionDisable"> {{ option_value.name }} </div> {% else %} <div class="groupOption"> {{ option_value.name }} </div> {% endif %} {% endfor %} </div> </div> {% endif %} {% endfor %} {% endif %} Но это не сработало, просьба подсказать, если кто знает рабочий вариант
      Весь код данного модуля:
      <?php class ControllerExtensionModuleFeatured extends Controller { public function index($setting) { $this->load->language('extension/module/notify_when_available'); $data['text_out_of_stock'] = $this->language->get('text_out_of_stock'); $data['out_of_stock_show'] = $this->config->get('module_notify_when_available_stock'); $data['out_of_stock_notify'] = $this->config->get('module_notify_when_available_notify'); $this->load->language('extension/module/featured'); $this->load->model('catalog/product'); $this->load->model('tool/image'); $data['products'] = array(); if (!$setting['limit']) { $setting['limit'] = 4; } if (!empty($setting['product'])) { $lang = $this->config->get('config_language_id'); $title = isset($setting['titles']['title'.$lang]) && $setting['titles']['title'.$lang] ? $setting['titles']['title'.$lang] : ''; if (isset($title) && $title) { $data['heading_title'] = $title; } if (isset($setting['shuffle']) && $setting['shuffle']) { shuffle($setting['product']); } $products = array_slice($setting['product'], 0, (int)$setting['limit']); foreach ($products as $product_id) { $product_info = $this->model_catalog_product->getProduct($product_id); if ($product_info) { if ($product_info['image']) { $image = $this->model_tool_image->resize($product_info['image'], $setting['width'], $setting['height']); } else { $image = $this->model_tool_image->resize('placeholder.png', $setting['width'], $setting['height']); } if ($this->customer->isLogged() || !$this->config->get('config_customer_price')) { $price = $this->currency->format($this->tax->calculate($product_info['price'], $product_info['tax_class_id'], $this->config->get('config_tax')), $this->session->data['currency']); $data['priceInt'] = $this->tax->calculate($product_info['price'], $product_info['tax_class_id'], $this->config->get('config_tax')); } else { $price = false; } $specialSavings =0; if ((float)$product_info['special']) { $special = $this->currency->format($this->tax->calculate($product_info['special'], $product_info['tax_class_id'], $this->config->get('config_tax')), $this->session->data['currency']); $data['specialInt'] = $this->tax->calculate($product_info['special'], $product_info['tax_class_id'], $this->config->get('config_tax')); $data['specialSavings'] = round((($data['priceInt']-$data['specialInt'])/$data['priceInt'])*100, 2); $specialSavings = $data['specialSavings']; } else { $special = false; } if ($this->config->get('config_tax')) { $tax = $this->currency->format((float)$product_info['special'] ? $product_info['special'] : $product_info['price'], $this->session->data['currency']); } else { $tax = false; } if ($this->config->get('config_review_status')) { $rating = $product_info['rating']; } else { $rating = false; } $options = array(); foreach ($this->model_catalog_product->getProductOptions($result['product_id']) as $option) { if($option['required']){ $product_option_value_data = array(); foreach ($option['product_option_value'] as $option_value) { if (!$option_value['subtract'] || ($option_value['quantity'] >= 0)) { $product_option_value_data[] = array( 'product_option_value_id' => $option_value['product_option_value_id'], 'option_value_id' => $option_value['option_value_id'], 'name' => $option_value['name'], 'image' => $this->model_tool_image->resize($option_value['image'], 50, 50), 'quantity' => $option_value['quantity'], 'price_prefix' => $option_value['price_prefix'] ); } } $options[] = array( 'product_option_id' => $option['product_option_id'], 'product_option_value' => $product_option_value_data, 'option_id' => $option['option_id'], 'name' => $option['name'], 'type' => $option['type'], 'value' => $option['value'], 'required' => $option['required'] ); } } $data['products'][] = array( 'product_id' => $product_info['product_id'], 'quantity' => $result['quantity'], 'quantity' => $product_info['quantity'], 'quantity' => isset($result['quantity']) ? $result['quantity'] : (isset($product_info['quantity']) ? $product_info['quantity'] : 1), 'attribute_groups' => $this->model_catalog_product->getProductAttributes($product_info['product_id']), 'thumb' => $image, 'name' => $product_info['name'], 'description' => utf8_substr(strip_tags(html_entity_decode($product_info['description'], ENT_QUOTES, 'UTF-8')), 0, $this->config->get('theme_' . $this->config->get('config_theme') . '_product_description_length')) . '..', 'price' => $price, 'special' => $special, 'specialSavings' => $specialSavings, 'tax' => $tax, 'rating' => $rating, 'options' => $options, 'href' => $this->url->link('product/product', 'product_id=' . $product_info['product_id']) );  
       
    • By Slavik7
      Добрый день! установил модуль с многоуровневыми категориями, поэтому модуль, который скрывает пустые категории не действует на этот модуль.
       
      Но то что не скрываются пустые категории это ещё ладно. Просто при переходе на пустую категорию выдаёт ошибку (Фото 1) и ссылается на этот код (Фото 2)
       
      Подскажите пожалуйста, что в этом коде не так? И буду благодарен если подскажите как скрыть пустые категории в этом модуле.
       
      Модуль с многоуровневыми категориями, скачивал вот здесь:


    • By nashivan
      Есть размерная сетка на opencart 2.3, ее нужно повторить но уже на opencart 3:
      на двойке она сделана на чистом php в tpl файле (product.tpl), но opencart 3 поддерживает только twig формат, поэтому скопировать просто php код на тройку не получится (product.twig)
       
       
      Вот код на opencart 2.3:
      <table> <?php $s1 = array(); $s2 = array(); $arr = array(); foreach ($option['product_option_value'] as $option_value) { list($a, $b) = explode("x", $option_value['name']); $s1[] = intval($a); $s2[] = intval($b); $arr[intval($a)][] = array(intval($b), $option_value['product_option_value_id']); } $id = $option['product_option_id']; $s1 = array_unique($s1); rsort($s1); $s2 = array_unique($s2); sort($s2); foreach ($s1 as &$value) { echo "<tr>"; echo "<td>".$value."</td>"; foreach ($s2 as &$value2) { echo "<td>"; $p = false; foreach ($arr[$value] as &$value3) { if($value3[0] == $value2){ $p = true; $val = $value3[1]; } } if ($p) { echo "<label><input type='radio' name='option[".$id."][]' value='".$val."' required /><span class='stock' val='".$val."' name ='".$value."x".$value2."' vid='".$id."'></span></label>"; } else{ echo "<span class='out-stock'></span>"; } echo "</td>"; } echo "</tr>"; } echo "<tr><td></td>"; foreach ($s2 as &$value) { echo "<td>".$value."</td>"; } echo "</tr>"; ?> </table> В админке опции прописаны вот так: 170x52, 170x54, 170x60, 176x52, 176x54, 176x60, 182x52, 182x54, 182x60 (пример)
       
       
      Пытался воспользоваться онлайн сервисом http://phptotwig.com/ , но выдает ошибку на строке с explode
      Пытался адаптировать сам этот код под твиг, но опыта в этом мало, вот что получилось:
      <table> <tbody> {% for option_value in option.product_option_value %} <tr> <td>{{ option_value.name | split('x', 2)[0] }}</td> <td><label><input type="radio" name="option[{{ option.product_option_id }}][]" value="{{ option_value.product_option_value_id }}" required=""><span class="stock" val="{{ option_value.product_option_value_id }}" name="{{ option_value.name }}" vid="402"></span></label></td> </tr> {% endfor %} <tr> <td></td> {% for option_value in option.product_option_value %} <td>{{ option_value.name | split('x', 2)[1] }}</td> {% endfor %} </tr> </tbody> </table>  
       
      Может есть модуль для такой сетки? Или лучше уже допилить код? Подскажите, пожалуйста, в какую сторону нужно копать.
       
    • By boooeller2
      Нужно настроить синхронизировать 1С с сайтом на OcStore 2.3 двусторонней связью. Заказы с сайта должны выгружаться в 1С и реализовываться продукция. Наличие с 1С должно подтягиваться на сайт. 1С заполнено номенклатурой частично, то есть, нужно догрузить недостающую номенклатуру с сайта в 1с по такой же структуре.
      Версия 1С:
      https://prnt.sc/12l2sc4
    • By kaaspb
      Здравствуйте

      задача следующего плана:
       
      I. Создать второй склад в логике opencart (итого получим на выходе у каждого товара 2 склада): 

      - наличие товара на 1 складе = товар в наличии
      - наличие на 2 складе = товар под заказ
      - наличие на 1 и 2 втором складе = товар в наличии, приоритет статуса у 1 склада / списание кол-ва идет с первого склада до момента пока товар не закончится и не останется только на 2 складе, следовательно, товар сразу же станет в статусе под заказ (после того, как все будет распродано с приоритетного первого склада)
       
      II. Сразу после заказа на сайте:
      Выгрузить данные сформированного заказа в 1 лист гугл таблицы со всеми стандартными данными (номер заказа, наименование, артикул, способ приобретения, адрес доставки, если это доставка, номер клиента, комментарии и тд)
       
      III. После этого сразу Выгрузить список с наименованием, кол-вом, ценой актуальных остатков на лист 2 в той же гугл таблице
       
      IV. После паузы (которую надо иметь способ выставлять вручную) загрузить подготовленные данные о кол-ве обоих складов и актуальные цены
      /те выгрузив заказ в гугл таблицы и актуальное кол-во, мы ждем какое-то время, пока данные просчитаются в нашей гугл таблице и обратно все актуальные данные отдаем в сайт/
      по факту скрипт выгрузил данные о заказе (лист 1), сразу же актуальное кол-во с ценами на сайте (лист 2), далее задержка, которую мы настроим по ходу, далее считывает с отдельного листа (лист 3)  данные с ценами и кол-вом обоих складов
  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.