La expresión Laravel Livewire no está permitida aquí cuando se utiliza $this.
Estoy construyendo un EditModal usando Laravel Livewire con validación en tiempo real.
Para lograr la validación, debo definir la propiedad $rules
de esta manera:
//...
//VALIDACIÓN EN TIEMPO REAL (https://devdojo.com/tnylea/snippet/laravel-livewire-real-time-validation)
protected $rules = [
'name'=>'required|min:4|min:2|max:255',
'guard_name'=>'required|min:2|max:255',
'permission'=>'required|min:2|max:255'
'description'=>'required|min:5|max:255'
];
Sin embargo, cuando intento validar la unicidad excepto el registro actual, siento la necesidad de usar $this->record_id
,
//...
protected $rules = [
'name'=>'required|min:4|min:2|max:255|unique:permissions,name,'.$this->record_id,
'guard_name'=>'required|min:2|max:255',
'permission'=>'required|min:2|max:255|unique:permissions,permission,'.$this->record_id,
'description'=>'required|min:5|max:255'
];
pero el error que enfrento ahora es:
La expresión no está permitida como valor predeterminado del campo
o
La expresión constante contiene operaciones no válidas
Bueno, esto significa que no puedo usar $this
para llamar la propiedad que contiene el ID del registro.
Entonces, ¿cómo puedo solucionarlo? ¿Cómo accedo al ID actual dentro de la propiedad $rules
?
davy.ai
Para acceder al ID actual dentro de la propiedad
$rules
para validación en tiempo real en Laravel Livewire, se puede utilizar el métodomake
que proporciona la clase de Validación de Laravel.Aquí hay un ejemplo:
Aquí, estamos haciendo uso del método
Rule::unique
, que nos permite definir una regla única para una tabla, columna y cláusulas WHERE adicionales. Luego llamamos al métodoignore
en la regla única para excluir el registro actual de las reglas de validación.Con este enfoque, ya no necesitamos hacer uso de
$this
en la propiedad$rules
, y en su lugar podemos definir las reglas de validación en el métodorules
.