CakePHP + TinyButStrong

Кто-нибудь пытался использовать TinyButStrong вместе с CakePHP? У меня нет предварительного знания TinyButStrong, но, похоже, это хороший способ генерировать документы Word из шаблонов. Но я не уверен, как интегрировать это с приложением CakePHP.

Спасибо за любые идеи / предложения.

С наилучшими пожеланиями, Тони.

    Я предполагаю, что вы имеете в виду TinyButStrong с плагином OpenTBS, который может объединять DOCX (и другие документы Ms Office и OpenOffice) с использованием шаблонов.

    Ниже приведен способ добавления действия экспорта в CakePHP-контроллер, который предназначен для создания Docx для загрузки.

    Следующий код доступен для CakePHP версии 1.3, он не протестирован с версией 2.0.

    Шаги:

    1) Добавьте классы TBS и OpenTBS в каталог поставщика под подкаталог:

    поставщики / TBS / tbs_class.php
    поставщики / TBS / tbs_plugin_opentbs.php

    2) Создайте помощник CakePHP, который упростит подготовку TBS + OpenTBS:

    приложение / просмотров / помощники / tbs.php

    <?php class TbsHelper extends AppHelper { function getOpenTbs() { App::import('Vendor', 'tbs/tbs_class'); App::import('Vendor', 'tbs/tbs_plugin_opentbs'); $tbs = new clsTinyButStrong; // new instance of TBS $tbs->Plugin(TBS_INSTALL, OPENTBS_PLUGIN); // load OpenTBS plugin return $tbs; } } 

    3) Теперь добавьте новое «экспортное» действие в контроллер, который должен сгенерировать Docx:

    приложение / контроллеры / example_controller.php

     <?php class ExamplesController extends AppController { var $name = 'Examples'; function export() { // Stop Cake from displaying action's execution time, this can corrupt the exported file // Re-ativate in order to see bugs Configure::write('debug',0); // Make the Tbs helper available in the view $this->helpers[] = 'Tbs'; // Set available data in the view $this->set('records', $this->Example->find('all')); } } 

    4) Последнее, чтобы создать соответствующее представление. Не забудьте разместить свой шаблон DOCX в той же папке, что и представление.

    app / views / examples / export.ctp (ниже)
    app / views / examples / export_template1.docx (для сборки с помощью Ms Office)

     <?php ob_end_clean(); // Just in case, to be sure // Get a new instance of TBS with the OpenTBS plug-in $otbs = $tbs->getOpenTbs(); // Load the DOCX template which is supposed to be placed in the same folder $otbs->LoadTemplate(dirname(__FILE__).'/export_template1.docx'); // Merge data in the template $otbs->MergeBlock('r', $records); // End the merge and export $file_name = 'export.docx'; $otbs->Show(OPENTBS_DOWNLOAD, $file_name); exit; // Just in case, to be sure 

    TinyButStrong предоставляет возможности для объединения глобальных переменных PHP, но рекомендуется не использовать такую ​​функцию в CakePHP. Вместо этого вы должны использовать MergeBlock () и MergeField () с данными, заданными контроллером для представления.

    Если вы встретили ошибки, не забудьте отключить строку

     Configure::write('debug', 0); 

    и это покажет вам ошибки CakePHP. В противном случае CakePHP скроет все ошибки, включая ошибки PHP.

    Не забывайте, что OpenTBS также имеет режим отладки. Если необходимо, обратитесь к руководству .

    Вы также можете сделать это lib (для использования в любом месте вашего приложения).