0
1

Livewireでバイディングされる値が表示されない時の解決法

Posted at

【結論】値が表示されないのはバリデーションの設定がないから

毎回かどうかわからないが、フォームコンポーネントを作っていて、前にもこんなんあったなとなったやつ。
以下のように、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',
    ];
}

どの条件で発生する挙動なのか謎だが、
バリデーションさえ設定すれば解決することをおさえておくと、戸惑わずに済む。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1