こんにちは。ファガイです。
本日はLaravelのアップロードパッケージのLaravel-Staplerを使ってみます。
こちらの記事を書く上で参考にさせていただいた記事は以下です。
Laravel4ファイルアップロードライブラリ「Stapler」-webOpixel
今回、上記の記事が少し古くなってたのもあって今の状態に関してまとめさせていただきます。
概要
今回はLaravel-Staplerというパッケージを使用します。StaplerパッケージはLaravel用というわけでは無くなりました。
やっていることは殆どGitHubと同様なので英語読める方はそっち読むといいです。
CodeSleeve/laravel-stapler – github
インストール
composer.jsonにcodesleeve/laravel-staplerを追加します。
"require" : {
...
"codesleeve/laravel-stapler" : "1.0.*"
}
composer update
app.phpのprovidersの中に以下のサービスプロバイダーを追加
'Codesleeve\LaravelStapler\LaravelStaplerServiceProvider'
configをpublish化
php artisan config:publish codesleeve/laravel-stapler
クイックスタート
例えばUserモデルが存在し、そのモデルにアバター画像を持たせたい場合に関してです。
class User extends Eloquent {
...
}
このようになっているかと思われますが以下の様に変更します。
use Codesleeve\Stapler\ORM\StaplerableInterface;
use Codesleeve\Stapler\ORM\EloquentTrait;
class User extends Eloquent implements StaplerableInterface {
use EloquentTrait;
...
public function __construct(array $attributes = array()) {
$this->hasAttachedFile('avatar', [
'styles' => [
'medium' => '300x300',
'thumb' => '100x100'
]
]);
parent::__construct($attributes);
}
}
hasAttachedFileにてアップロード用の画像に関して情報を記載します。今回は、avatarというfile(inputで受け取るname)にします。あ、そうそうfillableにも追加しておいてくださいね。
先程モデルに追加したavatarを管理するためのカラムをDBに追加する
こちらなのですが欠陥があります。すでにissueが投げられていますのでそちらの通りに直しましょう。いつか直してくれるでしょう。
Fasten command error #5 – CodeSleeve/laravel-stapler
FastenCommand.phpの84行目を修正します。
$migration = View::make('stapler-l4::migration', $data)->render();
を
$migration = View::make('laravel-stapler::migration', $data)->render();
に変更しておいて下さい。そうしないと動きません・・・。
その後コマンドの実行を行います。
php artisan stapler:fasten users avater
php artisan migrate
こちらのfastenコマンドは以下のような形です。
php artisan stapler:fasten table名 name名
追加
基本的に追加はHTMLの方間違えてなければそのままcreateメソッド呼べばオッケーです。
User::create(Input::all());
取得
取得は以下のような形です。
<img src="<?= $user->avatar->url() ?>" >
<img src="<?= $user->avatar->url('medium') ?>" >
<img src="<?= $user->avatar->url('thumb') ?>" >
削除
削除というか、リセットするには以下のようにSTAPLER_NULLを入れてsaveしましょう。
$user->avater = STAPLER_NULL;
$user->save();
ついでに
staplerは最初の時点でどこに保存するか設定がされています。
publish済なので、config/packages/codesleeve/laravel-stapler/filesystem.phpです。
こちらにurlという項目とpathという項目があるので、見ておくと良いかもしれません。デフォルトだと、public/systemの中に色々分けられて配分されるようですね。
まとめ
結構このパッケージは便利だと思います。しかしながら更新が2ヶ月前で止まっているので今後もちゃんとサポートされるのかはわからないですね。
ではではー。
コメント