Laravel初心者です。
社員管理システムを作成しています。
現在、一覧画面から社員検索機能を実装しているのですが
検索ボタンを押下した際、
「Undefined variable $employees」というエラーが発生しています。
発生している問題・エラーメッセージ
Undefined variable $employees (View: /work/backend/resources/views/employee/index.blade.php)
該当のソースコード
//index.blade.php //検索処理 <form action="{{ route('employee.search') }}" method="post" style="display: inline-block;"> @csrf <input class="keyword" type="text" placeholder="キーワード" name="search"> <button id=searchButton type="submit">検索</button> </form> //検索処理終了 <select name="employeeSort" id="sort"> <option>@sortablelink('empNumber', '社員番号')</option> <option>@sortablelink('id', '社員ID')</option> <option>@sortablelink('lastName', '社員姓')</option> </select> <input id="toggle" class="toggle-input" type='checkbox' name="deleteEmployee" method="POST"/> <label for="toggle" class="toggle-label"></label> <button id=button type="submit">CSV出力</button> <form action="{{ route('employee.create')}}" method="PUT" style="display: inline-block;"> @csrf @method('PUT') <button id=button type="submit">新規登録</button> </form> </div> <table class="empTable"> <tr> <th>社員番号</th> <th>社員ID</th> <th>社員姓</th> <th>社員名</th> </tr> @if(isset($_POST['deleteEmployee'])) <div class="deleteEmployee"> <tr> @foreach ($employees as $employee) <td>aaa</td> <td>{{ $employee->id }}</td> <td>{{ $employee->lastName }}</td> <td>{{ $employee->firstName }}</td> @endforeach </tr> </div> @endif <tr> //ここでエラー @foreach ($employees as $employee) <td><a href="{{ route('employee.edit', $employee->id)}}">{{ $employee->empNumber }}</a></td> <td>{{ $employee->id }}</td> <td>{{ $employee->lastName }}</td> <td>{{ $employee->firstName }}</td> <th> <form action="{{ route('employee.destroy', $employee->empNumber)}}" method="POST" onsubmit="return deleteItem()"> @csrf @method('DELETE') <input type="submit" name="" value="削除" class="deleteButton"> </form> </th> </tr> @endforeach </table>
// web.php Route::post('/employee/search', 'App\Http\Controllers\EmployeeController@search')->name('employee.search');
// EmployeeController.php namespace App\Http\Controllers; use App\Http\Controllers\Controller; use App\Models\Employee; use Illuminate\Http\Request; class EmployeeController extends Controller { /** * Display a listing of the resource. * * @return \Illuminate\Http\Response */ public function index(Request $request) { // $employees = Employee::paginate(20); return view('employee.index', compact('employees')); } //検索処理 public function search(Request $request) { $search = $request->input('search'); if ($request->filled('search')) { //検索キーワードが一致するレコードを絞り込む $query=Employee::where('empNumber', 'like', "%{$request->search}%")->orWhere('id', 'like', "%{$request->search}%") ->orWhere('lastName', 'like', "%{$request->search}%")->orWhere('firstName', 'like', "%{$request->search}%"); } return view('employee.index', ['search' => $search]); }
試したこと
index.blade.phpのエラー部分を@if(isset($employees))と@endifで囲む
@if(isset($_POST['deleteEmployee'])) <div class="deleteEmployee"> <tr> @foreach ($employees as $employee) <td>aaa</td> <td>{{ $employee->id }}</td> <td>{{ $employee->lastName }}</td> <td>{{ $employee->firstName }}</td> @endforeach </tr> </div> @endif <tr> @if(isset($employees)) @foreach ($employees as $employee) <td><a href="{{ route('employee.edit', $employee->id)}}">{{ $employee->empNumber }}</a></td> <td>{{ $employee->id }}</td> <td>{{ $employee->lastName }}</td> <td>{{ $employee->firstName }}</td> <th> <form action="{{ route('employee.destroy', $employee->empNumber)}}" method="POST" onsubmit="return deleteItem()"> @csrf @method('DELETE') <input type="submit" name="" value="削除" class="deleteButton"> </form> </th> </tr> @endforeach @endif
ネットで調べたところ、issetで囲むとあったので試しましたが、エラー内容は変わりません。
書き方等問題ある部分ございましたら教えていただきたいです。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/10/20 01:01