【Laravel5.8】Storageクラスを用いてファイルを参照・編集したい
アプリケーションによっては、ファイルを利用してデータを管理することもあります。アプリケーション内に、あるファイルを読み込んだり、ファイルにデータを保存するなどして、ファイルを利用したデータ管理を行うことはよくあるでしょう。こうした場合、Laravelには便利なクラスが用意されています。
引用;PHPフレームワーク Laravel実践開発-掌田 津耶乃
ファイル参照やアップロードを行うサイトは数多くありますので、Storageクラスを用いて簡単にファイルの参照・編集を行なっていきましょう。
ファイルの参照を行う場合
/storage/app/内にtxtファイルを設置
Storageクラスはデフォルトで/storage/app/ディレクトリ内を参照するため、こちらに適当なtxtファイルを作成しましょう。
/storage/app/sample.txt
sample.txtの中身です。
ControllerでStorageクラスを使用
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use Illuminate\Support\Facades\Storage; class HelloController extends Controller { public function index() { // Storageクラスは自動で/storage/app/内を参照するため、それ以下のファイルパスを記述。 $sample_data = Storage::get('sample.txt'); $data = [ 'msg'=> $sample_data ]; return view('hello.index', $data); } }
web.phpでルート定義
Route::get('/hello','HelloController@index');
Bladeファイルの作成
<!DOCTYPE html> <html lang="ja"> <head> <title>Laravel</title> </head> <body> <h1>Hello Index</h1> <p>{{$msg}}</p> </body> </html>
これでsample.txt内のテキストが{{$msg}}内に表示されているはずです。
ファイルの編集を行う場合
次にファイルの編集を行っていきましょう。
今回は、GETパラメータを利用して、GETパラメータの中身をsample.txtに表示されるようにしていきます。
Controllerへ追記
以下のアクションを追記します。
public function other($msg) { $data = Storage::append('sample.txt',$msg); return redirect('/hello'); }
appendは、第一引数に指定したファイルパスのファイルの末尾へ、第二引数に指定されたものを追記するというものです。
Storage::append('sample.txt',$msg);
ちなみにこのように書くとファイルの先頭に$msgを追記できます。
Storage::prepend('sample.txt',$msg);
web.phpへ追記
以下のようにルート定義を追記します。
Route::get('/hello/{msg}','HelloController@other');
これで、URLの末尾に追加した文言がsample.txtに追加されたはずです。