誰かがTinyButStrongをCakePHPと一緒に使ってみましたか? 私はTinyButStrongに関する事前知識は持っていませんが、テンプレートからWord文書を生成する良い方法と思われます。しかし、私はこれをCakePHPアプリケーションとどのように統合するかはわかりません。CakePHP + TinyButStrong
ありがとうございます。アイデアやご提案ありがとうございます。
お礼、 トニー。
誰かがTinyButStrongをCakePHPと一緒に使ってみましたか? 私はTinyButStrongに関する事前知識は持っていませんが、テンプレートからWord文書を生成する良い方法と思われます。しかし、私はこれをCakePHPアプリケーションとどのように統合するかはわかりません。CakePHP + TinyButStrong
ありがとうございます。アイデアやご提案ありがとうございます。
お礼、 トニー。
OpenTBSプラグインを使用してTinyButStrongを意味するものとします。このプラグインは、テンプレートを使用してDOCX(および他のMs OfficeとOpenOfficeドキュメント)をマージすることができます。
アクションを、ダウンロードするDocxを生成することを目的としたCakePHPコントローラに追加する方法です。
次のコードはCakePHPバージョン1.3で利用できますが、バージョン2.0ではテストされていません。
ステップ:
1)サブディレクトリの下に、ベンダーのディレクトリにTBSとOpenTBSクラスを追加します。
ベンダー/ TBS/tbs_class.php
ベンダー/ TBS/tbs_plugin_opentbs.php
アプリ/ V:
2)TBS + OpenTBSの準備を簡素化しますCakePHPのヘルパーを作成します。 iews /ヘルパー/ 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テンプレートを配置することを忘れないでください。 (MS Officeに構築する)
(以下)APP /ビュー/例/ export.ctp
アプリ/ビュー/例/ export_template1.docx
<?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()を、ViewのControllerによって設定されたデータで使用する必要があります。
あなたがバグを満たしている場合、
Configure::write('debug', 0);
ラインを無効にすることを忘れないでください、これはあなたにCakePHPのエラーが表示されます。それ以外の場合、CakePHPはPHPエラーを含むすべてのエラーを隠します。
OpenTBSにもデバッグモードがあることを忘れないでください。必要に応じてmanualを参照してください。
これをlibにすることもできます(アプリケーション内のどこでも使用できます)。
Hello Skrol29、ありがとうございました。はい、プラグインは正しいです。しかし、私はモデルでこれを使用する必要があります。プロジェクト全体はさまざまな種類の文書を生成してアーカイブするためです。ビューを使用してすぐに表示/出力しないでください。 –
Hello Tony、出力のタイプを変更するには、OpenTBSの単なる選択肢です。 Show(OPENTBS_DOWNLOAD、...)をShow(OPENTBS_FILE、...)に置き換えます。ビューでこれを必要としない場合は、上記のTBSコードを1つのスニペットに集めるだけです。 – Skrol29
こんにちはSkrol29、ありがとうございました。これは私が必要とするものです:-) –