Laravel4.0 / stapler 1.0.0-Beta4 を使用します。
インストール
「composer.json」に「codesleeve/stapler」を追加
composer.json
"require": { "laravel/framework": "4.0.*", "codesleeve/stapler": "dev-master" },
composer update
providersに下記追加
app/config/app.php
'providers' => array( ・・・ 'Codesleeve\Stapler\StaplerServiceProvider', ),
使い方
例えば記事(Postモデル)に写真(Photo)を載せるとします。
Model
Postモデルに下記を追加
models/Post.php
<?php class Post extends Eloquent { use Codesleeve\Stapler\Stapler; ... public function __construct(array $attributes = array()) { $this->hasAttachedFile('photo', [ 'styles' => [ 'medium' => '300x300#', 'thumb' => '100x100#' ] ]); parent::__construct($attributes); } }
ここではサムネイルなど作成するためのアプションを設定しています。
その他、アップロードされた画像はデフォルトで「public/system」に保存されますが、「url」オプションで保存ディレクトリの変更などもできたりします。
下記コマンドを実行して、postsテーブルにカラムを追加します。
php artisan stapler:fasten posts photo
php artisan migrate
View
新規作成のviewに画像を挿入する欄と、Formの部分に「'files' => true」を追加します。
views/posts/create.blade.php
{{ Form::open(array('route' => 'posts.store','files' => true)) }} <ul> ... <li> {{ Form::label('photo', 'Photo:') }} {{ Form::file('photo') }} </li> <li> {{ Form::submit('Submit', array('class' => 'btn btn-info')) }} </li> </ul> {{ Form::close() }}
「/posts/create」にアクセスして画像がアップロードできるか確認します。
初期設定だと「public/system」にアップされます。
表示
Viewで表示したい場所に下記を記述します。
views/posts/show.blade.php
{{ HTML::image($post->photo->url()) }}
今回はModelにサムネイルなどの設定もしましたので、引数に指定した文字列を入れれば表示できます。
{{ HTML::image($post->photo->url('thumb')) }}
Amazon S3 とかにも対応してるらしいです。
詳しくはドキュメントを確認してください。
CodeSleeve / stapler