【結論】値が表示されないのはバリデーションの設定がないから
毎回かどうかわからないが、フォームコンポーネントを作っていて、前にもこんなんあったなとなったやつ。
以下のように、wire:modelの指定は間違いないし、dd()
やdump()
を使って値がきちんと渡ってきているところまで確認ができているのにテキストボックスの初期値が表示されない。
<div class="form-row">
<div class="col-sm-6">
<div class="form-group">
<label for="name">名前</label>
<input type="text" id="name" class="form-control
@error('model.name') is-invalid @enderror"
wire:model="model.name" @if($disabled) disabled @endif>
@error('model.name')
<span class="error text-danger">{{ $message }}</span>
@enderror
</div>
</div>
</div>
コンポーネントクラスのrules()
メソッドにバリデーションルールを指定したら解決する。
protected function rules(): array
{
return [
'model.name' => 'required|max:125',
];
}
どの条件で発生する挙動なのか謎だが、
バリデーションさえ設定すれば解決することをおさえておくと、戸惑わずに済む。