忍者ブログ

STEP UP BLOG

Home > ブログ > Laravel4

[PR]

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

Laravel 4.2でのログローテーション

Laravel 4.2ではインストールした直後だとログがひとつのファイルにずっと出力され続けます。
app/start/global.php
Log::useFiles(storage_path().'/logs/laravel.log');

ここで設定していますね。
これだとログ調査とかいろいろ不便ですので、
日毎に新しいファイルに出力するように修正すると便利です。
Log::useDailyFiles(storage_path().'/logs/laravel.log');

これで快適ロギングライフの出来上がりです。
PR

Laravelでの画像処理はIntervention Imageで決まり!

と断言したくなるほど、このライブラリは便利です。
簡単にやりたい画像処理ができます。
http://image.intervention.io/

以下が導入方法。特別なことはありません。

composer.json
"require": {
    …
    "intervention/image": "2.*"
},


app/config/app.php
providers = array(
    …
    'Intervention\Image\ImageServiceProvider',
),

aliases = array(
    …
    'Image'           => 'Intervention\Image\Facades\Image',
),


これで、Laravelのどこでも
$img = Image::make('foo.jpg');
$img->resize(320, 240)->save('bar.jpg');
のように書けます。

Image::make()で画像読込ですが、canvas()でまっさらな画像を作ることもできます。
$img = Image::make('foo.jpg');
$canvas = Image::canvas(600, 450, '#fff');
$canvas->insert($img, 'center')->save($path);

resize()では、横または縦を固定にしてアスペクト比を保ったままリサイズもできます。
$img->resize(null, 200, function ($constraint) {
    $constraint->aspectRatio();
});


もちろん透かしだってできます。
$img = Image::make('foo.jpg')->insert('watermark.png');

公式サイトを見るとわかるように、Webアプリケーションでよく使われる画像処理はほぼ網羅しています。
画像処理が必要な際は是非使ってみてはいかがでしょうか。

LaravelでExcel出力

PHPでもExcel出力したい場合があります。くやしいけど。
PHPでExcelを取り扱うライブラリでポピュラーなのがPHPExcelです。

https://phpexcel.codeplex.com/
https://github.com/PHPOffice/PHPExcel

ありがたいことにPHPExcelもcomposerでインストールできます。
composer.jsonに、
"phpoffice/phpexcel": "1.8.*"

を追加してcomposer updateしましょう。
vendor以下にPHPExcelがインストールされているはずです。
composerで入れるとautoload.phpのおかげでrequire_onceなどを書かなくてよいのでとても便利です。
あとは、
$excel = new PHPExcel();

などして、好きなように作ればいいと思います!

Laravel4のマイグレーション

LaravelのDBはマイグレーションで管理されています。
ここもRailsそのままですね。
まずはテーブルを作りたい場合ですが、
$ php artisan migrate:make create_hoge_table --create=hoge

これで/app/databases/migrations以下にテーブル作成のphpが作られます。
それを編集して、
$ php artisan migrate

これでテーブルが作成されます。
初期データが必要なら、
app/database/seeds以下に初期データ作成クラスを作りましょう。
初期データは、
$ php artisan db:seed --class=HogeTableSeeder

で登録できます。
注意点として、db:seedでは既存のテーブルを使うので、idが1から振られるとは限らない点です。
開発でいろいろいじくって全部まっさら、初期データのみにしたい場合の魔法の言葉は、
$ php artisan migrate:refresh --seed

となります。
マイグレーションはRailsの作法でまだまだ慣れない部分も多くていろいろ苦労しています。。
とりあえず、特定のテーブルだけ新しく作り直すにはどうしたらよいのだろうか。。

Laravel4でのリダイレクト指定

世間ではLaravel5のリリースが騒がれていますが、まだまだ案件で使用するには不安な点もあるので未だLaravel4で開発しています。
4から5は大幅に変わっているっぽいので、どこかで踏ん切りをつけて5にジャンプしたいですね。
というわけで今回はリダイレクトです。
Webサイトを作っているといろいろな場面でリダイレクトを使います。
当然Laravelにもリダイレクトの機構があり、しかもLaravelでは様々な書き方ができるので以下にまとめてみました。
// 普通にURLのルート以下を指定
// http://www.hoge.com/login にリダイレクト
Redirect::to('login');

// 識別名を付ける
Route::get('top', array('as' => 'home', 'uses' => 'TopController@index'));
// 識別名で指定して、 http://www.hoge.com/top にリダイレクト
Redirect::route('home');

// コントローラとアクションを指定してリダイレクト
Redirect::action('TopController@index');

// バリデーションエラーなどで入力も一緒にリダイレクト
Redirect::to('edit')->withInput();
// バリデーションエラーなどでエラーメッセージも一緒にリダイレクト
Redirect::to('edit')->withInput()->withErrors($validator);

最後の$validatorはMessageBagのインスタンスです。
http://laravel.com/docs/4.2/validation#error-messages-and-views
http://laravel.com/api/4.2/Illuminate/Support/MessageBag.html
これは、
$errors = new Illuminate\Support\MessageBag();
$errors->add('number', '整数で入力してください。');
Redirect::to('edit')->withInput()->withErrors($errors);

と好きなように作れます。
ビューでは、
@if ($errors->has('number'))
    {{{$errors->first('number')}}}
@endif

とすれば表示できるので活用してみてはいかがでしょうか。

PAGE TOP