Open9

php・Laravelメモ

はるはる

phpの条件分岐

$hogeに値が入っているかどうか

if ($hoge) {
  <!-- 値が入っている時の処理 -->
} else {
  <!-- 値が入っていないとき(null)の処理 -->
}

https://qiita.com/AkiraAlex/items/d07bd553ec52ebaf8ba5

追記:Laravelの場合

@if ($value)
  // trueだった場合の表示
@elseif ($value02)
  // 違う条件の場合で true だった場合の表示
@else
  // 当てはまらなかった場合の表示
@endif

https://memocarilog.info/php-mysql/8779

はるはる

foreachの書き方

@foreach (配列名 as 要素)
処理
@endforeach

以下、例です。
※実際にLaravelで使う場合は、@foreach、@endforeachの必要あり

$fruits = ['apple', 'banana', 'orange', 'strawberry', 'pineapple'];
 
foreach ($fruits as $value) {
  echo $value."<br>";
}

参考:
https://webukatu.com/wordpress/blog/29085/#foreach

はるはる

@csrfとは?

introductionの翻訳が以下です。

クロスサイトリクエストフォージェリーは、認証されたユーザーの代わりに不正なコマンドが実行される悪意のあるエクスプロイトの一種です。ありがたいことに、Laravelはクロスサイトリクエストフォージェリ(CSRF)攻撃からアプリケーションを簡単に保護することができます。

引用元:
https://laravel.com/docs/10.x/csrf#main-content

日本語で書かれているQiita
https://qiita.com/suzuki0430/items/00482c44f23a8151eddd

はるはる

[WIP] Undefined variable $hoge

Laravelで、Controllerに新たな以下のようなコードを追加したところ、Undefined variable $hogeというエラーが出ました。
YYY,XXXにはそれぞれ変数と、Viewが入ります。

 elseif(YYY != Null){
    return view('XXX');
}

なお、Viewをとあるindex.blade.phpに指定すると、エラーが出ないので、どこかで値渡しをしていない可能性があります。

原因は??

Viewのblade.phpファイルで、定義していない変数を使っていたことが原因。
return view('XXX')->with('hoge', $hoge);によって、値を渡すことによって、解決できました。
もしくは、例$user = auth()->user()のように直接値をbladeファイルで書くことによっても解決できました。
※今回はuserテーブルにある変数だったため。
Laravelの認証機能については、以下がわかりやすかったです。
https://qiita.com/ucan-lab/items/a7441bff64ff1f173c10

はるはる

filer関数とは?

The filter method filters the collection using the given callback, keeping only those items that pass a given truth test:

翻訳:filter メソッドは、指定されたコールバックを使用してコレクションをフィルタリングし、指定された真理テストに合格した項目のみを保持します:

$collection = collect([1, 2, 3, 4]);
 
$filtered = $collection->filter(function (int $value, int $key) {
    return $value > 2;
});
 
$filtered->all();
 
// [3, 4]

If no callback is supplied, all entries of the collection that are equivalent to false will be removed:
コールバックが与えられない場合、falseと等価なコレクションのエントリはすべて削除される:

$collection = collect([1, 2, 3, null, false, '', 0, []]);
 
$collection->filter()->all();
 
// [1, 2, 3]

For the inverse of filter, see the reject method.
https://laravel.com/docs/10.x/collections#method-filter