登録済みのデータ一覧が表示されてる画面からテーブルデータの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');
※流用される場合は自己責任でお願いします。
ディスプレイ広告
ディスプレイ広告