Livewire Update Validation on Unique Field

Hello!

I’m using livewire 2.3. I’m trying to update a user using livewire with validation.

Here’s my livewire class:

    public User $user;
    public $name;
    public $username;
    public $email;

    protected $rules = [
        'name' => 'required|string|max:255',
        'username' => 'required|min:6|max:255|alpha_dash|unique:users,username,' . $this->user->id,
        'email' => 'required|string|email|max:255|unique:users,email,' . $this->user->id
    ];

I’m getting a Constant expression contains invalid operations error if I’ll include $this->user->id in protected $rules = [] .

For anyone having the same problem. I solved it by creating a function of rules and include $this->validate() in you submitForm method.

public $userID;

public function mount()
{
    $this->userID = $this->user->id;
}

public function updateForm()
{
    $validatedData = $this->validate();

    $this->user->update($validatedData);

    session()->flash('message', 'User successfully updated.');
}

protected function rules()
{
    return [
        'name' => 'required|string|max:255',
        'username' => 'required|min:6|max:255|alpha_dash|unique:users,username,' . $this->userID,
        'email' => 'required|string|email|max:255|unique:users,email,' . $this->userID
    ];
}
1 Like