【laravel】compactとは?意味と使い方|compact(): Undefined variable: operatorエラーの対処法
この記事では、【laravel】compactとは?意味と使い方|compact(): Undefined variable: operatorエラーの対処法についてまとめました。
compactとは
変数や配列をコントローラーから渡すときに使う関数。
php公式リファレンスーcompact
変数と値から配列を作成する
※
注意:
PHP 7.3 より前のバージョンでは、設定されていない全ての文字列は、単にスキップされます。
例
<?php $city = "San Francisco"; $state = "CA"; $event = "SIGGRAPH"; $location_vars = array("city", "state"); $result = compact("event", $location_vars); print_r($result);上の例の出力は以下となります。
https://www.php.net/manual/ja/function.compact.phpArray ( [event] => SIGGRAPH [city] => San Francisco [state] => CA )
例からも分かるように、値は配列に格納されています。
なので、出力する際は配列に対応した出力方法が必須です。
使い方
この場合には$postをview(index)に渡していることがわかります。
するとviewでは以下のように変数を出力することができます。
入力(コントローラ)
public function index() { $post = "postです"; return view('index', compact('post')); }
bladeファイルで変数を出力する構文を使うと、コントローラーから渡された
$postが出力されます。
出力(bladeファイル)
<p> {{$post}} </p>
複数の変数を渡す場合は、
compact()内にコンマで区切り複数記入します。
public function index() { $post_1 = "post_1です"; $post_2 = "post_2です"; return view('index', compact('post_1', 'post_2')); }
他にもDBからのデータを取得してcompact関数にてviewに渡すなどがあります。
エラーについて
以下のエラーに遭遇しました。
compact(): Undefined variable: operator
解決方法
- PHP を 7.2 にダウングレードする
- 最新の Laravel にする
- 具体的に「composer update」を実行する
https://stackoverflow.com/questions/56726263/compact-undefined-variable-operator