##現状・お願い
LaravelのFormファサードにおけるselect boxでforeachを使用したいと考えています。
現状、foreachとFormファサードの兼ね合わせ方が分からず、
htmlのselectboxの書き方で代替しております。
しかし、textフォームなどにLaravelのFormファサードを使用しているためか、
select boxのforeach部分(具体的には「$val->id」「$val->client_name」)でエラーが出てしまいます。
foreachをLaravelのselectにて使用するためには、どのようにコードを記述すればいいでしょうか。
##エラーメッセージ
Trying to get property ‘id’ of non-object (View: /home/ec2-user/environment/invoice_and_todo/resources/views/todo/editItem.blade.php)
###editItem.blade
php
1@extends('layouts.layout') 2@section('title','案件管理画面') 3 @section('body') 4 <!--サイドメニューここから--> 5 <div class="row"> 6 <div class="col s0 l2"> 7 <ul id="slide-out" class="sidenav sidenav-fixed "> 8 <li><a href="{{url('/user')}}">クライアント一覧<i class="material-icons left">person</i></a></li> 9 <li><a href="#">案件カレンダー<i class="material-icons left">date_range</i></a></li> 10 <li><a href="{{url('/addClient')}}">クライアント追加<i class="material-icons left">add</i></a></li> 11 <li><a href="{{url('addItem')}}">案件追加<i class="material-icons left">add</i></a></li> 12 </ul> 13 </div> 14 <!--サイドメニューここまで--> 15 <div class="col s12 offset-l1 l8"> 16 <nav class="header"> 17 <a href="#" data-target="slide-out" class="sidenav-trigger btn-floating"><i class="medium z-depth-1 material-icons">add</i></a> 18 <h2 class="center-align">案件管理画面</h2> 19 </nav> 20 {{Form::open(['url' => route('editItem',['id'=>$list->id]),'method'=>'POST'])}} 21 {{ csrf_field() }} 22 <div class="input-field col s12"> 23 {{Form::text('item_name', $list->item_name,['class' => 'validate', 'id' => 'item_name'])}} 24 {{Form::label('item_name','案件名')}} 25 </div> 26 <div class="input-field col s12"> 27 {{Form::text('delivery_date', $list->delivery_date,['class' => 'datepicker', 'id' => 'delivery_date'])}} 28 {{Form::label('delivery_date','納期')}} 29 </div> 30 <div class="input-field col s12"> 31 {{Form::text('unit_price', $list->unit_price,['class' => 'validate', 'id' => 'unit_price'])}} 32 {{Form::label('unit_price','納期')}} 33 </div> 34 <div class="input-field col s12"> 35 {{Form::select('states', ['未執筆','執筆済み','納品済み', '請求済み'] , null, ['class' => 'select', 'id' => 'states'])}} 36 {{Form::label('states', 'ステータス')}} 37 </div> 38 <div class="input-field col s12"> 39 <select id="client_id" class="select" name="client_id"> 40 <option value="" disabled selected>クライアントを選んでください。</option> 41 @foreach($list as $val) 42 <option value="{{$val->id}}">{{$val->client_name}}</option> 43 @endforeach 44 </select> 45 <label for="client_id">クライアント</label> 46 </div> 47 <div class="input-field col s12"> 48 {{Form::textarea('memo', $list->memo, ['class' => 'validate', 'id' => 'memo'])}} 49 {{Form::label('memo','備考欄')}} 50 </div> 51 {{Form::submit('案件追加', ['class' => 'waves-effect waves-light btn blue accent-1'])}} 52 {{Form::hidden('client_id', $list->client_id)}} 53 {{Form::hidden('states', $list->states)}} 54 {{Form::close()}} 55 <form method="POST" action="/deleteItem/{{$list->id}}" method="post"> 56 {{ method_field('delete') }} 57 {{csrf_field()}} 58 <input type="submit" value="案件情報削除" class="waves-effect waves-light btn red lighten-1"> 59 </form> 60 </div> 61 </div> 62 @endsection
###Controller(一部抜粋)
php
1// 案件情報の追加・更新・削除 2 public function addNewItem(Request $request){ 3 $item = new Item(); 4 $item->user_id = Auth::user()->id; 5 $item->client_id = $request->client_id; 6 $item->item_name = $request->item_name; 7 $item->delivery_date = $request->delivery_date; 8 $item->unit_price = $request->unit_price; 9 $item->states = $request->states; 10 $item->memo = $request->memo; 11 $item->save(); 12 return redirect('/addItem'); 13 } 14 public function editItem($id){ 15 $list = Item::find($id); 16 return view('todo.editItem', compact('list')); 17 } 18
回答1件
あなたの回答
tips
プレビュー