WEBOPIXEL

Laravel4ファイルアップロードライブラリ「Stapler」

Posted: 2014.01.15 / Category: PHP / Tag: 

「Stapler」はLaravelに簡単に画像などのファイルをアップロード機能を実装できるライブラリです。

Sponsored Link

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