質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Blade

Bladeとは、 PHPフレームワークのLaravelで使用することができるテンプレートエンジンです。テンプレートの継承とエスケープ機能を提供します。

Q&A

解決済

1回答

2744閲覧

Laravel の bladeファイル内の@foreachについて

kurooon

総合スコア3

Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Blade

Bladeとは、 PHPフレームワークのLaravelで使用することができるテンプレートエンジンです。テンプレートの継承とエスケープ機能を提供します。

0グッド

0クリップ

投稿2020/10/26 17:11

やりたいことは、都道府県リストのテーブルとして、prefテーブルを作成してあります。
そのテーブルを全て取り出し、リスト化したいと思っています。

以下の感じで、prefテーブルからidと県名を取り出してリスト一覧にしたいと思っています。

しかし、php artisan serveで実行してみたところ、
Undefined variable: prefItems というエラーが出てしまい、
初期値の設定がされていないと言うエラーでした。

検索して@foreachに(array)を記述してみたり、
初期値として空の配列$prefItems = [];を入れてみたりとしてみたのですが、
結果変わらずでした。

 もっと根本的理由があるのでしょうか。

 9月から始めて経験が浅いため、これ以上のことはわかりませんでした。
一応誤字の確認等してみましたが、私がみた限りでは見当たりませんでした。

 お手数ですが、お助け願います。

(以下、index.blade.phpファイルの抜粋)

PHP

1 2<div class="col-sm-3"> 3 <select class="custom-select d-block" name="pref_id"> 4 5  @foreach($prefItems as $prefItem) 6   <option value="{{$prefItem->id}}">{{$prefItem->name}}</option> 7  @endforeach 8 9 </select> 10 </div>

その他ファイルについては、
PrefController.phpファイルが以下の通りです。

php

1<?php 2 3namespace App\Http\Controllers; 4 5use Illuminate\Http\Request; 6use App\Pref; 7 8class PrefController extends Controller 9{ 10 public function index(Request $request) 11 { 12 $prefItems = Pref::all(); 13 } 14 15}

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

Undefined variable: prefItems というエラーが出てしまい、

初期値の設定がされていないと言うエラーでした。

検索して@foreachに(array)を記述してみたり、

初期値として空の配列$prefItems = [];を入れてみたりとしてみたのですが、
結果変わらずでした。

もっと根本的理由があるのでしょうか。

はい。Undefined variableとあるように変数が未定義です。いくら取り出し方を変えても未定義なものからデータを取ろうと思っても無理です。

なので、何ができていないかでいうとControllerからViewを返す事もできていないようですし、変数も渡せてないのだと思います。これらに関してはもっとControllerとは何か理解する必要があります。

エラーも読み解けていないのでまずPHPの理解が足りないのではないかという印象です。9月から始めたと記載されていますが、Laravelをでしょうか?いきなりフレームワークを扱うということはなかなか厳しいかと思いますし、帰って挫折しやすくなってしまうというのがこのサイトを通じて良く分かります。

投稿2020/10/26 17:30

kai0310

総合スコア2076

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kurooon

2020/10/27 01:37

プログラムを始めたのが9月からです。 スクールの課題なのでそこはなんとも言えません。 自分にとっても難しいことは実感しております。
hentaiman

2020/10/27 01:54

この回答で理解出来ないのならスクールの進度が不適切か、スクールの教材や進度は適切だが質問者だけが学習が遅れている可能性があります。 後者の可能性があるのでスクールで答えを聞き説明を聞き追いつく努力をするしかないでしょう。 聞いても教えてもらえないのなら前者です。アホなスクールに通う価値は無いですが、公式マニュアル(https://readouble.com/laravel/7.x/ja/views.html)に本質問の回答と言っても良い内容のサンプルコードがあるので、これを参考に自力で対処出来るならスクールに通ってもいいかもしれません。 それも無理ならスクール辞めて別の手段の学習を模索された方が良いでしょう。スクールを途中で辞めては金が勿体ないかもしれませんが、まともに教える事も出来ないスクールに通う事は金と時間の両方の無駄です。
kai0310

2020/10/27 03:50 編集

PHPの理解も出来てない、MVCについても分からない段階でLaravelを習うのはとても悪手だと思います。 スクールに通っているのであれば本質問含めてメンター(?)などがいるかと思うので質問してみるのも手です。当方スクール等には通っていないのでスクールの制度自体どのようなものがあるかわかりませんが。
kurooon

2020/10/28 05:42 編集

そうですね、回答ありがとうございます。 解決は自力でできました。
hentaiman

2020/10/27 05:21

回答と答えの載ってるURLまで教えてもらっておきながら説教を食らうだけと感じる感性をお持ちならteratailに限らず他のサービスでも現実でも他者に頼らない事をおすすめします。 また、スクールの内容はスクールで聞きましょう。 さらにこういったコメントが不要と感じるのなら上の二行のみをコメントに書くべきです。
kai0310

2020/10/27 08:58

自力でと仰っていますが、魚の釣り方を教えるような回答にはなっていると思います。もしも魚だけが欲しいだとかお客様扱いして欲しいのであれば無料のサービスで行うことではないと思います。そしてそれはただの依頼。それこそスクールを利用している意味がないのでは? [teratail が目指す回答は、魚か、釣り方か、それとも ...]( https://teratail.com/questions/39089 )
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問