PHPExcelで利用する関数メモ

PHPEXCELで動作させるときに利用する関数のメモ。FuelPHPで組み合わせて利用のメモです。

 

 

パッケージの読み込み

\Package::load('excel');

 

templateを利用した場合の読み込み

$excel = \PHPExcel_IOFactory::load($template_path);

 

 

列を数値で指定した場合に列名に変換する方法

PHPExcel_Cell::stringFromColumnIndex( 列の数値 )

 

 

 

とりあえず徐々に追加予定。

PostgreSQLでNULLのソート順位を指定する

NULLの値を前に持っていくのか後ろに持っていくのか指定できたらいいですよね?

そんな時は下記のパターンでPostgreSQLは指定できました。

・NULLを最初にする場合
ORDER BY カラム名 DESC NULLS FIRST

・NULLを最後にする場合
ORDER BY カラム名 DESC NULLS LAST

 

PHPWordでテンプレートを読み込んでファイルで保存する場合

PHPWordでテンプレートを読み込んでファイルで保存する場合でハマった。

 

↓保存するときにsaveだと指定したファイル名で保存されない。

$phpword = new \PhpOffice\PhpWord\PhpWord();

$phpword = $phpword->loadTemplate('test.docx');

$phpword->save('test2.docx');

 

saveAsで保存。

$phpword = new \PhpOffice\PhpWord\PhpWord();

$phpword = $phpword->loadTemplate('test.docx');

$phpword->saveAs('test2.docx');

 

最初から定義見とけば早かったな。。。

【PHP】Request Entity Too Largeが表示された時の話

いろいろと完成だーぽちっと・・・「

Request Entity Too Large

」だそうです・・・。

 

あーって思ってしまうのですがめげずに対処を。

 

えーと、「ModSecurity」を入れていたので

SecRequestBodyLimitの値を調整。

 

あと、phpの方でも上限にぶつかっていた・・・。

php.ini
max_input_vars = 5000

 

どんだけ1画面でPOSTするんだよってな・・・。ちょっと考えなければいけないかも。

 

FuelPHPでバリデーションで追加したルールを削除する方法

FuelPHPのバリデーションって便利で基本的に利用しています。その中で、自動的にルールをがつがつ追加するプログラムを作っていたのですが一部に限って例外が発生して、追加したルールを削除しなければならないということが発生しました。

削除ってあるのかなってバリデーション定義を除いていたところ、「delete_rule」なるものを発見!!FuelPHP 1.7のドキュメントにはありませんでしたが、探していたらFuelPHP 1.8のドキュメントに記載がありました。

 

↓記述方法は下記のようになるとこと。FuelPHP1.8のドキュメントはこちら

// フィールドから valid_string ルールを取り除く
$fieldset->field('fieldname')->delete_rule('valid_string');

// そして、必須項目の指定を取り除く
$message = $fieldset->field('fieldname')->delete_rule('required', true);

※FuelPHP1.8のドキュメントから抜粋

requiredの項目を取り除くときは「true」も必要とのこと。

 

input type=textの値をJqueryで変更をChangeイベントで発火させる

テキストの内容を変更したときにJqueryのchangeイベントは発火しないのでその時の対象をメモしておきます。

Changeイベントで発火せるのには

値変更するときにChangeを付ける。

$('#ID名').val('変更値').change();

 

キャッチする側ではchangeで受け取る

$('#ID名').change(function() {
console.log("値変更がありました");
});

 

 

これでできました。

FuelPHPでビューにHTMLデータをそのまま渡したい時のメモ

FuelPHPでビューにHTMLデータをそのまま渡したい時のメモ

 

■コントローラー側の設定

$this->template->content = \View::forge('index', $data);
$this->template->content->set_safe('html_data', $data['html_data']);

 

$this->template->contentでいつも通りVIEWのコンテンツを設定したのちにset_safeで生データ渡しの値をセットする。

 

Webに高機能な書式付入力を可能にする TinyMCEエディタを設置してみる

WordPressの時はTinyMCEのプラグインを入れれば何も気にすることがなくざくざく便利なエディタができると思うのですが、HTMLでカスタマイズして構築しているものはそうもいかないので導入の仕方から設定などメモ的なものを残していきます。

 

なぜ、TinyMCEかというと他のツールもありますがTinyMCEの方が便利なので・・。

 

■設置の仕方 (https://www.tinymce.com

(1)コードを張り付けるだけ

<script src="//cdn.tinymce.com/4/tinymce.min.js"></script>
<script>tinymce.init({ selector:'textarea' });</script>

 

textareaの対してエディタが適用される。

mce1

 

(2)ダウンロードファイルを読み込ませる

<script src="TINYMCEを保存したフォルダ/tinymce.min.js"></script>
<script>tinymce.init({ selector:'textarea' });</script>

※図は同じになるので省略

 

name=xxxxに対しての場合

<script src="TINYMCEを保存したフォルダ/tinymce.min.js"></script>
<script>tinymce.init({ selector:'[name="xxxxx"]' });</script>

 

 

 

■日本語化にする

やっぱり英語は苦手です。日本語にします。

(1)下記のURLから日本語をダウンロードする

https://www.tinymce.com/download/language-packages/

 

(2)TinyMCEのlangsのフォルダの中にダウンロード後に展開したja.jsファイルを入れる

 

(3)読み込みの設定を修正する

<script src="TINYMCEを保存したフォルダ/tinymce.min.js"></script>
<script>tinymce.init({ selector:'[name="xxxxx"]',language: "ja" });</script>

↓のように日本語になる

mce2

■ツールバーのボタンを変更する

ボタンの表示非表示の設定は下記のURLを参考にボタンを調べてください。

https://www.tinymce.com/docs/advanced/editor-control-identifiers/#toolbarcontrols

 

・テーブルを入れてみた

        <script>
            tinymce.init({ 
                selector:'[name="xxxx"]',
                language: "ja",
                plugins: "table",
                menubar: "table",
                toolbar: "table"                
            });
        </script>

 

あ、テーブルだけになってしまった。上記を見ての通り、プラグインを追記しないと動かないものやメニューやツールバーが変わってしまうので使うものを選択していきましょう。

mce3

 

さてどこまでやるかな・・・・。

 

        <script>
            tinymce.init({ 
                selector:'[name="xxxxxxx"]',
                language: "ja",
                height: 600, 
                plugins: "table link hr code image media",
                menubar: false,
                toolbar: "code | undo redo | bold italic underline | alignleft aligncenter alignright | formatselect fontselect fontsizeselect | hr | link unlink | table | image | media"
            });
        </script>

 

↓こんな感じにしてみた

mce4

あ、テキストカラーが無かった。pluginsに「textcolor」、toolbarに「forecolor backcolor」追加した。

 

 

■画像の問題

やっぱり、イメージをWordPressみたいにアップしてやりたいな。。。

っていうことで、有料のプラグインを試してみるか・・・。

↓このあたりとか

https://codecanyon.net/item/tinymce-4-image-manager/4744204

 

うーん、フレームワーク使っているしそのままだとNGだな・・・改造改造・・・。

あれ、あれこれ改良しまくったら原型があまりにもなくなってしまった・・・。

■画像のURLの問題

いざ、画像を挿入!ってやったら相対パスになっていた。

この問題は

「relative_urls : false,」を追加することにより絶対パスで記述

        <script>
            tinymce.init({ 
                selector:'[name="xxxxxxx"]',
                language: "ja",
                height: 600, 
                plugins: "table link hr code image media",
                menubar: false,
        relative_urls : false,
                toolbar: "code | undo redo | bold italic underline | alignleft aligncenter alignright | formatselect fontselect fontsizeselect | hr | link unlink | table | image | media"
            });
        </script>

PostgreSQLのテーブルを空にする

PostgreSQLのテーブルの中身をぷちっとデータを空にしたいなって思っていて調べたら便利なクエリがありました。

テーブルを空にする方法

1.テーブルだけクリアする方法

truncate table 空にしたいテーブル名;

 

2.シーケンス番号もクリアしたい場合

truncate table 空にしたいテーブル名 restart identity

DELETEでぐりぐりしなくて良いので簡単です。

 

Fuelphpでも「truncate」の関数あったな・・・