Blog

symfony2.1での画像の扱い方

2013.01.30Cat:Symfony プログラマー

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

jeff_maj
システムエンジニア/1984年生/上海交通大学卒/Webサービス/EC/iphone/android
» 投稿一覧
  • Launch Cart次世代ECサイト構築システム 初期月額無料
  • LaunchMovie ECに特化した動画制作サービス

Archive

ページTOPへ