Laravel 8縺ァ莨壼藤繧オ繧、繝域ァ狗ッ5 莨壼藤諠蝣ア譖エ譁ー讖溯ス
Laravel縺ョ繝代ャ繧ア繝シ繧ク縺ィ縺励※蛻ゥ逕ィ縺ァ縺阪k繝ュ繧ー繧、繝ウ讖溯ス縺ョ繧ォ繧ケ繧ソ繝槭う繧コ繧キ繝ェ繝シ繧コ繧らャャシ募シセ縺ィ縺ェ繧翫∪縺励※縲∽サ雁屓縺ッ莨壼藤諠蝣ア譖エ譁ー讖溯ス繧呈コ門y縺励∪縺吶
莨壼藤繧オ繧、繝医→縺励※縺ッ蠢鬆医ョ讖溯ス縺ィ縺ェ繧翫∪縺吶′縲∵峩譁ー霎コ繧翫°繧牙ー代@隍髮代↓縺ェ縺」縺ヲ縺阪∪縺吶ョ縺ァ縺ァ縺阪k縺縺醍エー縺九¥險倩シ峨@縺ヲ縺縺阪∪縺吶
蟇セ蠢懈ヲりヲ
繝代ャ繧ア繝シ繧ク縺ィ縺励※蛻ゥ逕ィ縺ァ縺阪k莨壼藤逋サ骭イ讖溯ス縺ョ豬√l縺ォ貅匁侠縺励∽シ壼藤諠蝣ア譖エ譁ー讖溯ス繧呈ァ狗ッ峨@縺セ縺吶
莉雁屓縺ョ蟇セ蠢懊ョ荳ュ縺ァ縺ッ菴懊j霎シ縺セ縺ェ縺讖溯ス繧ゅ≠繧翫∪縺吶′縲√Ν繝シ繝ォ繧堤オア荳縺ョ縺溘a縺ォ蜻シ縺ウ蜃コ縺吶□縺大他縺ウ蜃コ縺輔l縺ヲ縺繧区ゥ溯ス縺ェ縺ゥ繧ゅ≠繧翫∪縺吶ョ縺ァ縲√#莠謇ソ縺上□縺輔>縲
謇矩
莉雁屓貅門y縺悟ソ隕√↑縺ョ縺ッ荳玖ィ倥〒縺吶ゅ■繧縺」縺ィ螟壹>縺ァ縺吶′縲∝九縺ョ蟇セ蠢懊ッ縺昴%縺セ縺ァ隍髮代〒縺ッ縺ゅj縺セ縺帙s縲
- 繧ウ繝ウ繝医Ο繝シ繝ゥ
- Trait
- 繝ェ繧ッ繧ィ繧ケ繝医ヵ繧ゥ繝シ繝
- Event
- View
- 繝ォ繝シ繝医ョ險ュ螳
縺昴l縺ァ縺ッ縺セ縺壹ッ繧ウ繝ウ繝医Ο繝シ繝ゥ繧剃ス懈舌@縺セ縺励g縺縲
繧ウ繝ウ繝医Ο繝シ繝ゥ譁ー隕丈ス懈
繝吶シ繧ケ縺ッ莨壼藤逋サ骭イ縺ョ繧ウ繝ウ繝医Ο繝シ繝ゥ(RegisterController)繧偵さ繝斐壹@縺ヲ縺阪∪縺吶
螳梧仙ス「縺ッ荳玖ィ倥↓縺ェ繧翫∪縺吶
namespace App\Http\Controllers\Customer;
use App\User;
use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Validator;
use App\Traits\Customer;
use Illuminate\Validation\Rule;
class EditController extends Controller
{
use Customer\EditsTrait;
protected $redirectTo = '/home';
public function __construct()
{
$this->middleware('auth');
}
public function index ()
{
return $this->showEditForm();
}
protected function validator(array $data)
{
return Validator::make($data, [
Rule::unique('users')->ignore(Auth::id())
]);
}
protected function update(array $data)
{
$id = Auth::id();
$customer = User::find($id);
$customer->email = $data['email'];
$customer->zipcode = $data['zipcode'];
$customer->prefecture = $data['prefecture'];
$customer->city = $data['city'];
$customer->address1 = $data['address1'];
$customer->address2 = $data['address2'];
$customer->tel = $data['tel'];
$customer->save();
return $customer;
}
}
use Customer\EditsTrait
縺ゅ→縺九i菴懈舌☆繧亀rait繧貞他縺ウ蜃コ縺励※縺縺セ縺吶
莨壼藤諠蝣ア螟画峩縺ォ髢「繧上k繝薙ず繝阪せ繝ュ繧ク繝繧ッ縺ッ縺薙■繧峨↓髮邏縺励∪縺吶
index
莨壼藤諠蝣ア譖エ譁ー逕サ髱「繧貞他縺ウ蜃コ縺励∪縺吶ThowEditForm縺ッTrait縺ォ螳夂セゥ縺励※縺翫j縺セ縺励※縲〃iew縺ォ貂。縺吩シ壼藤諠蝣ア縺ョ蜿門セ励↑縺ゥ繧5rait縺九i貂。縺励※縺縺セ縺吶
validator
縺薙■繧峨′莉雁屓縺ョ繝溘た縺ァ縺吶
莨壼藤諠蝣ア繧呈峩譁ー縺吶k髫帙↓縲√Γ繝シ繝ォ繧「繝峨Ξ繧ケ縺ョ繝舌Μ繝繝シ繧キ繝ァ繝ウ繝ュ繧ク繝繧ッ繧偵◎縺ョ縺セ縺セ菴ソ縺縺ィ
縲後Γ繝シ繝ォ繧「繝峨Ξ繧ケ縺後☆縺ァ縺ォ逋サ骭イ縺輔l縺ヲ縺繧九h縲阪→縺縺繧ィ繝ゥ繝シ縺ォ隕玖槭o繧後k縺薙→縺ォ縺ェ繧翫∪縺吶
閾ェ蛻縺ョ莨壼藤諠蝣ア繧呈峩譁ー縺励h縺縺ィ縺励※縲√☆縺ァ縺ォ閾ェ蛻縺ョ諠蝣ア縺ィ縺励※逋サ骭イ貂医∩縺ョ繝。繝シ繝ォ繧「繝峨Ξ繧ケ縺碁崎、繝√ぉ繝繧ッ縺ィ縺励※蠑輔▲謗帙°繧九o縺代〒縺吶
縺昴%縺ァ縲驥崎、繝√ぉ繝繧ッ縺ョ蟇セ雎。縺九i縲後Ο繧ー繧、繝ウ繝ヲ繝シ繧カ縺ョ縺ソ螟悶☆縲阪→縺縺繝ォ繝シ繝ォ繧定ソス蜉縺励∪縺吶
Rule::unique('users')->ignore(Auth::id())
update
View縺九iarray縺ァ繝代Λ繝。繝シ繧ソ繧貞女縺大叙繧翫「pdate縺励※縺縺セ縺吶
譖エ譁ー蟇セ雎。縺ョ莨壼藤縺ッ繝ュ繧ー繧、繝ウ諠蝣ア縺九i蜿励¢蜿悶k繧医≧縺ォ縺励∪縺吶
$id = Auth::id();
View蛛エ縺ォhidden縺ァ蝓九a霎シ繧薙□ID繧剃スソ縺縺ェ縺ゥ縺励※縺励∪縺縺ィ縲∽ク肴ュ」縺ォID縺梧嶌縺肴鋤縺医i繧後◆蝣エ蜷医↓莉紋ココ縺ョ莨壼藤諠蝣ア縺梧峩譁ー縺ァ縺阪※縺励∪縺縺セ縺吶ょソ縺壹ヵ繝ュ繝ウ繝亥エ縺九i驕縺縺ィ縺薙m縺ァ莨壼藤迚ケ螳壹☆繧句ソ隕√′縺ゅj縺セ縺吶
trait縺ョ貅門y
縺薙■繧峨b繝吶シ繧ケ縺ッRegisterUsers繧貞茜逕ィ縺励∪縺吶′縲√%縺ョ繝輔ぃ繧、繝ォ縺ッ繧ウ繧「繝輔ぃ繧、繝ォ縺ョ荳ュ縺ォ譬シ邏阪&繧後※縺繧九ョ縺ァ縲∵爾縺吶ョ縺悟ー代@謇矩俣蜿悶j縺セ縺吶
繝代せ縺ッ縺薙■繧峨↓縺ェ繧翫∪縺吶
src/Illuminate/Foundation/Auth/RegistersUsers.php
螳梧舌@縺溘た繝シ繧ケ縺後%縺。繧
namespace App\Traits\Customer;
use App\Events\Customer\CustomerEditedEvent;
use App\Http\Requests\Customer\CustomerEditRequest;
use App\User;
use Illuminate\Foundation\Auth\RedirectsUsers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Log;
trait EditsTrait
{
use RedirectsUsers;
public function showEditForm()
{
$id = Auth::id();
$customer = User::find($id);
return view('customer.edit',[
'customer' => $customer
]);
}
public function edit(CustomerEditRequest $request)
{
$this->validator($request->all())->validate();
event(new CustomerEditedEvent($user = $this->update($request->all())));
$this->guard()->login($user);
return $this->edited($request, $user)
?: redirect($this->redirectPath());
}
protected function guard()
{
return Auth::guard();
}
protected function edited(request $request, $user)
{
}
}
縺薙■繧峨b繝。繧ス繝繝峨ョ隱ャ譏弱r縺励※縺縺阪∪縺吶
showEditForm
莨壼藤諠蝣ア譖エ譁ー逕サ髱「繧定。ィ遉コ縺輔○繧九◆繧√ョ繝。繧ス繝繝峨〒縺吶
$id = Auth::id()縲縺ァ繝ュ繧ー繧、繝ウ荳ュ縺ョ莨壼藤諠蝣ア繧貞叙蠕励@縺ヲ縺翫j縲〃iew縺ォ繝代Λ繝。繝シ繧ソ縺ィ縺励※貂。縺励※縺縺セ縺吶
return view('customer.edit',[
'customer' => $customer
]);
edit
莨壼藤諠蝣ア譖エ譁ー縺ョ繝薙ず繝阪せ繝ュ繧ク繝繧ッ繧定ィ倩ソー縺励※縺縺セ縺吶
public function edit(CustomerEditRequest $request)
CustomerEditRequest繝ェ繧ッ繧ィ繧ケ繝医ヵ繧ゥ繝シ繝シ医%縺ョ縺ゅ→讒狗ッ会シ峨°繧峨ヱ繝ゥ繝。繝シ繧ソ繧貞女縺代→縺」縺ヲ蜃ヲ逅繧定。後>縺セ縺吶
$this->validator($request->all())->validate();
繧ウ繝ウ繝医Ο繝シ繝ゥ迢ャ閾ェ縺ョ繝舌Μ繝繝シ繧キ繝ァ繝ウ繝ュ繧ク繝繧ッ繧定ェュ縺ソ蜃コ縺励∪縺吶
event(new CustomerEditedEvent($user = $this->update($request->all())));
莨壼藤諠蝣ア螟画峩繧偵う繝吶Φ繝医→縺励※逋サ骭イ縺励∪縺吶ゑシ医う繝吶Φ繝医ョ荳ュ霄ォ縺ッ縺薙ョ縺ゅ→讒狗ッ会シ
繝ェ繧ッ繧ィ繧ケ繝医ヵ繧ゥ繝シ繝譁ー隕丈ス懈
逋サ骭イ逕サ髱「縺ョ菴懈舌ョ縺溘ウ縺ォ縲√Μ繧ッ繧ィ繧ケ繝医ヵ繧ゥ繝シ繝繧よコ門y縺励∪縺吶
縺薙■繧峨b莨壼藤逋サ骭イ逕サ髱「菴懈先凾縺ォ菴懈舌@縺溘Μ繧ッ繧ィ繧ケ繝医ヵ繧ゥ繝シ繝繧偵吶シ繧ケ縺ォ縺励∪縺吶
namespace App\Http\Requests\Customer;
use App\ValueObjects\Address1;
use App\ValueObjects\Address2;
use App\ValueObjects\City;
use App\ValueObjects\Email;
use App\ValueObjects\Prefecture;
use App\ValueObjects\Tel;
use App\ValueObjects\Zipcode;
use Illuminate\Foundation\Http\FormRequest;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Log;
class CustomerEditRequest extends FormRequest
{
public function authorize()
{
return true;
}
public function rules()
{
$id = Auth::id();
return [
'address1' => Address1::rules(),
'address2' => Address2::rules(),
'city' => City::rules(),
'email' => Email::rules($id),
'prefecture' => Prefecture::rules(),
'tel' => Tel::rules(),
'zipcode' => Zipcode::rules()
];
}
public function messages()
{
return [
'required' => ':attribute 繧貞・蜉帙@縺ヲ縺上□縺輔>縲'
];
}
莉雁屓縲√Γ繝シ繝ォ繧「繝峨Ξ繧ケ縺ョ蛟、繧ェ繝悶ず繧ァ繧ッ繝医ッ繝舌Μ繝繝シ繧キ繝ァ繝ウ繝ォ繝シ繝ォ繧剃ソョ豁」縺励※縺縺セ縺吶
public static function rules($customer_id = 0){
if($customer_id===0){
return ['required','string','email','max:255'];
}else{
$customer = User::find($customer_id);
return ['required','string','email','max:255',Rule::unique('users')->ignore($customer->email,'email')];
}
}
譖エ譁ー蟇セ雎。縺ィ縺励※縲驥崎、繝√ぉ繝繧ッ縺九i螟悶☆蟇セ雎。縺後≠繧句エ蜷医ョ蛻蟯舌r霑ス蜉縺励※縺縺セ縺吶
VIEW縺ョ譁ー隕丈ス懈
@extends('layouts.app')
@section('content')
<div class="container">
<div class="row justify-content-center">
<div class="col-md-8">
<div class="card">
<div class="card-header">{{ __('Customer_Edit') }}</div>
<div class="card-body">
<form method="POST" action="{{ route('customer.update') }}">
@csrf
<div class="form-group row">
<label for="email" class="col-md-4 col-form-label text-md-right">{{ __('E-Mail Address') }}</label>
<div class="col-md-6">
<input id="email" type="email" class="form-control @error('email') is-invalid @enderror" name="email" value="{{ $customer->email }}" required autocomplete="email">
@error('email')
<span class="invalid-feedback" role="alert">
<strong>{{ $message }}</strong>
</span>
@enderror
</div>
</div>
<!-------縺薙%縺九i莨壼藤逋サ骭イ霑ス蜉---------->
<div class="form-group row">
<label for="zip-code" class="col-md-4 col-form-label text-md-right">{{ __('zip-code') }}</label>
<div class="col-md-6">
<input id="zip-code" type="number" class="form-control @error('zip-code') is-invalid @enderror" name="zipcode" value="{{ $customer->zipcode }}" required autocomplete="zip-code">
@error('zip-code')
<span class="invalid-feedback" role="alert">
<strong>{{ $message }}</strong>
</span>
@enderror
</div>
</div>
<div class="form-group row">
<label for="prefecture" class="col-md-4 col-form-label text-md-right">{{ __('prefecture') }}</label>
<div class="col-md-6">
<input id="prefecture" type="text" class="form-control @error('prefecture') is-invalid @enderror" name="prefecture" value="{{ $customer->prefecture }}" required autocomplete="prefecture">
@error('prefecture')
<span class="invalid-feedback" role="alert">
<strong>{{ $message }}</strong>
</span>
@enderror
</div>
</div>
<div class="form-group row">
<label for="city" class="col-md-4 col-form-label text-md-right">{{ __('city') }}</label>
<div class="col-md-6">
<input id="city" type="text" class="form-control @error('city') is-invalid @enderror" name="city" value="{{ $customer->city }}" required autocomplete="city">
@error('city')
<span class="invalid-feedback" role="alert">
<strong>{{ $message }}</strong>
</span>
@enderror
</div>
</div>
<div class="form-group row">
<label for="address1" class="col-md-4 col-form-label text-md-right">{{ __('address1') }}</label>
<div class="col-md-6">
<input id="address1" type="text" class="form-control @error('address1') is-invalid @enderror" name="address1" value="{{ $customer->address1 }}" required autocomplete="address1">
@error('address1')
<span class="invalid-feedback" role="alert">
<strong>{{ $message }}</strong>
</span>
@enderror
</div>
</div>
<div class="form-group row">
<label for="address2" class="col-md-4 col-form-label text-md-right">{{ __('address2') }}</label>
<div class="col-md-6">
<input id="address2" type="text" class="form-control @error('address2') is-invalid @enderror" name="address2" value="{{ $customer->address2 }}" autocomplete="address2">
@error('address2')
<span class="invalid-feedback" role="alert">
<strong>{{ $message }}</strong>
</span>
@enderror
</div>
</div>
<div class="form-group row">
<label for="tel" class="col-md-4 col-form-label text-md-right">{{ __('tel') }}</label>
<div class="col-md-6">
<input id="tel" type="tel" class="form-control @error('tel') is-invalid @enderror" name="tel" value="{{ $customer->tel }}" required autocomplete="tel">
@error('tel')
<span class="invalid-feedback" role="alert">
<strong>{{ $message }}</strong>
</span>
@enderror
</div>
</div>
<!-------縺薙%縺セ縺ァ莨壼藤逋サ骭イ霑ス蜉---------->
<div class="form-group row mb-0">
<div class="col-md-6 offset-md-4">
<button type="submit" class="btn btn-primary">
{{ __('Register') }}
</button>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
</div>
@endsection
繝ォ繝シ繝郁ィュ螳
霑ス蜉縺吶k縺ョ縺ッ縺薙ョ2陦後〒縺吶
Route::get('/customer/edit', 'Customer\EditController@index')->name('customer.edit');
Route::post('/customer/edit', 'Customer\EditController@edit')->name('customer.update');


