実現したいこと
Exmentの詳細ページにボタンを追加して、ボタンの押下で該当ページを印刷したいです。
プラグインで機能を追加しようと考えています。
発生している問題・分からないこと
ボタンを押下しても印刷されない。
エラーも発生しないため何がおかしいのかが不明で修正に手間取っています。
該当のソースコード
PHP(公式1)
1<?php 2namespace App\Plugins\TestPluginDownload; 3 4use Exceedone\Exment\Services\Plugin\PluginButtonBase; 5 6class Plugin extends PluginButtonBase 7{ 8 /** 9 * Plugin Button 10 */ 11 public function execute() 12 { 13 // base64文字列、Content-Type、ファイル名を配列で返却する 14 $base_path = base_path('public/vendor/exment/images/user.png'); 15 $fileName = 'user.png'; 16 return [ 17 'fileBase64' => base64_encode(\File::get($base_path)), 18 'fileContentType' => \File::mimeType($base_path), 19 'fileName' => $fileName, 20 21 // 任意:「ダウンロードが完了しました」メッセージを表示する 22 'swaltext' => 'ダウンロードが完了しました', 23 ]; 24 } 25}
PHP(公式2)
1<?php 2namespace App\Plugins\PluginDemoButton; 3 4use Exceedone\Exment\Services\Plugin\PluginButtonBase; 5class Plugin extends PluginButtonBase 6{ 7 /** 8 * Plugin Button 9 */ 10 public function execute() 11 { 12 \Log::debug('Plugin calling'); 13 14 15 // 戻り値による画面遷移の詳細 ---------------------------------------------------- 16 // true : 「実行完了しました!」と画面右上に表示し、その画面でリロードする 17 return true; 18 19 // true : 「○○が正常に完了しました!この後は××の処理を行ってください」と、独自メッセージを表示する 20 // return [ 21 // 'result' => true, 22 // 'swaltext' => '○○が正常に完了しました!この後は××の処理を行ってください', 23 // ]; 24 25 // true : 「実行完了しました!」と表示し、別のページにリダイレクトする 26 // return redirect('https://github.com/exceedone/exment'); 27 // return admin_url('/'); 28 29 // false : 「○○のエラーが発生しました」と、独自エラーメッセージを表示する 30 // return [ 31 // 'result' => false, 32 // 'swaltext' => '○○のエラーが発生しました', 33 // ]; 34 35 36 // (v3.4.1対応)「一覧画面のメニューボタン」から呼び出しを行った場合 --------- 37 // 一覧画面でチェックを行っていたデータの、CustomValueオブジェクト一覧。\Illuminate\Support\Collection型 38 // $custom_values = $this->selected_custom_values; 39 } 40 41 /** 42 * (v3.4.3対応)画面にボタンを表示するかどうかの判定。デフォルトはtrue 43 * 44 * @return bool true: 描写する false 描写しない 45 */ 46 // public function enableRender(){ 47 // 例1:選択しているデータのidが2の場合ボタンを表示する 48 //return $this->custom_value->id % 2 === 0; 49 50 // カスタム列の値「status」が「active」の場合にボタンを表示する 51 // return $this->custom_value->getValue('status') === 'active'; 52}
PHP(ChatGPT)
1<?php 2namespace App\Plugins\TestPluginDownload; 3 4use Exceedone\Exment\Services\Plugin\PluginButtonBase; 5 6class Plugin extends PluginButtonBase 7{ 8 /** 9 * Plugin Button 10 */ 11 public function execute() 12 { 13 return [ 14 'script' => $this->getPrintScript(), 15 ]; 16 } 17 18 /** 19 * 印刷用のJavaScriptコードを生成 20 */ 21 private function getPrintScript() 22 { 23 return <<<EOT 24 <script> 25 function printPage() { 26 window.print(); 27 } 28 printPage(); 29 </script> 30 EOT; 31 } 32}
試したこと・調べたこと
- teratailやGoogle等で検索した
- ソースコードを自分なりに変更した
- 知人に聞いた
- その他
上記の詳細・結果
公式1と2のコードをChatGPTに読み込ませた上で、印刷ボタンを押下するとページが印刷されるコードを作成するように指示しました。
すると3つ目のコードが生成されましたが、実行してもエラーが表示されずページが更新されるだけの動作しかしないため、何が悪いのか分からない状態です。
補足
参考にした公式資料説明書
https://exment.net/docs/#/ja/plugin_quickstart_button
Exmentバージョン:v6.2.3

バッドをするには、ログインかつ
こちらの条件を満たす必要があります。