STERFIELD

symfony2.1での画像の扱い方

symfony2.1での画像の扱い方

symfony2.0を使ったことがあって、画像の扱い方(アップロードとリサイズ)がよく理解できていませんでした。
symfony2.1のインストールを機に、それをもう一度調べて、やってみました。

画像のアップロード

仮にユーザ登録の機能(userテーブルを使う)で、一個の画像ファイルをプロファイル画像としてアップロードする必要とします。
●Entity(class=User)

userテーブルには「image」というフィールドがあって、画像ファイルのファイル名を保存します。
「imagefile」は別にテーブルのファールドではなく、外部にも直接アクセスしたから、「public」にします。
HasLifecycleCallbacksの使いより、新規作成と編集前には「preUpload」が動いて、新規作成と編集後は「upload」が動きます。削除されたときも、「removeUpload」が動きますので、なかなかきれいな解決方法だと思います。

●Form(class=”UserType”)

DBに保存する「image」は出てこなくて、「imagefile」が出てきます。
●Twig(Template, filename=new.html.twig)

●Controller(PHP, filename=UserController.php)

アップした画像のリサイズ

このバンドル(プラグイン)を使ってみました。
便利ですが、注意点が一個あります。
●Twig(Template)

上記コードは、使い方を示していますが、「profile.jpg」は想定パス(urlの)ではなく、絶対パスであることを注意しなければなりません。

おまけ

複数画像をアップするなら、このバンドルが便利です。
自動的に画像をサイズで振り分けで作成してくれるですが、一箇所に複数の画像をアップロードすることができ、Entityとの連動が難しいです。

Author Profile

著者近影

スターフィールド編集部

SHARE

合わせて読みたい