登録済みのデータ一覧が表示されてる画面からテーブルデータのid(主キー)を使って、複製(コピー)して新規登録画面を表示する方法を紹介します。
Contents
ディスプレイ広告
社員テーブル(employees)構造
社員名、部署名が登録されている社員テーブル(employees)を用意しました。
名前 | 説明 |
---|---|
id | 主キー |
employee_name | 社員名 |
employee_department | 部署名 |
社員テーブル(employees)データ用Model
※Employee.phpファイルを用意します。
<?php namespace App; use Illuminate\Database\Eloquent\Model; class Employee extends Model { }
社員テーブル(employees)データ一覧画面、複製(コピー)して新規登録画面のControllerの記述
※社員テーブル(employees)データ一覧画面、複製(コピー)して新規登録画面を表示するEmployeesController.phpファイルを用意します。
Employeeモデルの読込
※Employeeモデルの読込を行い、EmployeeController内に「社員テーブル(employees)データ一覧画面、複製(コピー)して新規登録画面等の処理」を記述します。
namespace App\Http\Controllers; use Illuminate\Http\Request; use Illuminate\Validation\Rule; use App\Employee; //Employeeモデルを使用 use Validator; //バリデーションを使用 use DB; class EmployeeController extends Controller { /* 社員テーブル(employees)データ一覧画面、複製(コピー)して新規登録画面等の処理を記述 */ }
社員テーブル(employees)データ一覧画面のControllerの記述
※社員テーブル(employees)データを全て取得します。
public function index(Request $request) { $employees = DB::table('employees')->get(); return view('employees', [ 'employees' => $employees ]); }
複製(コピー)して新規登録画面のControllerの記述
※社員テーブル(employees)からidが一致するデータを取得します。
//複製登録画面 public function copyregister($id) { $employee = Employee::find($id); return view('employeescopyregister', [ 'employee' => $employee, ]); }
社員テーブル(employees)データ一覧、複製(コピー)して新規登録画面のviewの記述
社員テーブル(employees)データ一覧画面のviewの記述
※社員テーブル(employees)データ一覧を表示するemployees.blade.phpファイルを用意します。
<table> <thead> <th>ID</th> <th>社員名</th> <th>部署名</th> <th> </th> </thead> <tbody> @foreach ($employees as $employee) <tr> <td class="table-text"> <div>{{ $employee->id }}</div> </td> <td class="table-text"> <div>{{ $employee->employee_name }}</div> </td> <td class="table-text"> <div>{{ $employee->employee_department }}</div> </td> <td class="table-text"> <!-- 複製ボタン --> <form action="{{ url('employeescopyregister/'.$employee->id) }}" method="POST"> @csrf <button type="submit"> 複製 </button> </form> </td> </tr> @endforeach </tbody> </table>
複製(コピー)して新規登録画面のviewの記述
※社員テーブル(employees)データ一覧画面から「複製」ボタンをクリック後の複製(コピー)して新規登録employeescopyregister.blade.phpファイルを用意します。
<div> @include('common.errors') </div> <form enctype="multipart/form-data" action="{{ url('employeesentry') }}" method="POST"> @csrf <div>「<b>{{$employee->id}}</b>」データを複製して登録</div> <div> <label for="employee_name">社員名</label> <input type="text" name="employee_name" value="{{ old('employee_name', $employee->employee_name) }}"> </div> <div> <label for="employee_department">部署名</label> <input type="text" name="employee_department" value="{{ old('employee_department', $employee->employee_department) }}"> </div> <button type="submit">登録</button> <div> <a href="{{ url('/employees') }}"> < 一覧に戻る </a> </div> </form>
Routeの記述
※ページURLは必要に応じて変更して下さい。
本記事では記載してませんが複製(コピー)して新規登録画面でsubmit後「employeesentry」に送信し、EmployeeControllerにentry(登録処理)を記述して下さい。
//一覧表示 Route::get('/employees', 'EmployeesController@index'); //複製登録画面 Route::post('/employeescopyregister/{employees}','EmployeesController@copyregister'); //登録処理 Route::post('/employeesentry','EmployeesController@entry');
※流用される場合は自己責任でお願いします。