5
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【Laravel】コントローラからビューへの変数の受け渡し(compact関数)

Posted at

compact関数とは

変数名とその値から配列を作成するものらしいです。
laravel独自の関数ではなく、PHPの関数でした。
compact関数【PHP公式】

簡単に説明すると、
コントローラで受け取った値をビューへ受け渡す際、
compact関数を使うことで、よりスマートな記述をすることができるようになります。

実際の使い方

compact関数を使用する場合

public function index(Request $request) {

    $trRecords = TrRecord::orderBy('tr_date', 'desc')->paginate(10);
    return view('trrecords.index', compact('trRecords'));

}

compact関数を使用しない場合

public function index(Request $request) {

    $trRecords = TrRecord::orderBy('tr_date', 'desc')->paginate(10);
    return view('trrecords.index', ['trRecords' => $trRecords]);

}

やっていることは同じですが、
compact関数を使ってあげたときのほうがスマートな記述にすることができます。

今回は変数の数が1つだけだったのでそこまで冗長な感じのコードにはならなかったですが、
以下のように変数が増えていくとよりcompact関数を使ったほうが見やすいコードに仕上げることができるようになります。

public function test()
{
    $test1 = 'test1';
    $test2 = 'test2';
    $test3 = 'test3';
    $test4 = 'test4';
    
    // viewの第2引数で配列を書いている。
    return view('test', [
        'test1' => $test1,
        'test2' => $test2,
        'test3' => $test3,
        'test4' => $test4,
    ]);
}

public function test()
{
    $test1 = 'test1';
    $test2 = 'test2';
    $test3 = 'test3';
    $test4 = 'test4';
    
    // compact関数だけで書いている。
    return view('test', compact('test1', 'test2', 'test3', 'test4'));
}

ただ注意事項として、
viewの変数とcontrollerで定義した変数が同じとなるため、
そこを変えたい場合はcompact関数を使用せずに記載するやり方になるかとおもいます。

5
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?