シェアする

  • このエントリーをはてなブックマークに追加

[CakePHP2][Bad]Filebinderプラグインを別のプラグインの中のモデルに使用する方法

medium_2305701220
最初に断っておきますが、Badノウハウです。自分用のメモですので、真似しないほうが賢明です。そもそもこんなノウハウが必要になるシチュエーションが少ないと思いますが。

Cakephpでファイルアップロードを便利にしてくれるFilebinderプラグイン。
フックメソッドを当てることもできるので、画像のリサイズやトリミングなんかも可能で、ファイルアップロードが絡む案件はほとんどこのプラグインを使っています。

参考:CakePHPの超便利なファイルアップロードプラグイン、FileBinderプラグインの使い方をまとめてみた。 ? INSPIRE TECH

ただ、(自作)プラグイン内のモデルに対してFilebinderを利用しようとすると、FilebinderController.phpの35行目付近の

$this->loadModel($model);

でコケる事がわかりました。
データベースのAtachmentモデルに保存されたモデルをそのまま呼んでいます。

プラグインのモデルであれば

loadmodel([プラグイン名].[モデル名]);

こうでなくてはいけない。

モデル自身がプラグインに属しているかどうかの情報を持っていれば対応できそうですが、残念ながらモデルのインスタンスを見る限り無さそうです。

きっと方法はあるのだと思いますが、現段階でプラグインに対応させる方法が*[1] 思いつかないので、プラグイン内のモデルに対して利用するのを断念しました。

FilebinderController.php L:35

loadmodel('Plugin名.'.Model);

こうすれば動くけど・・・プラグインの意味がなくなるからやめました。。。

  1. たった一つの方法を除いて []

シェアする

  • このエントリーをはてなブックマークに追加

フォローする