#php #laravel #laravel-livewire
Вопрос:
Я пытаюсь сделать что-то простое, используя этот reset()
метод.
Моя url
модель (объект) имеет title
свойство, которое привязывается к полю ввода в моем блейде:
<input
type="text"
wire:model.lazy="url.title"
wire:keydown.escape="reset_fields"
...
В своей reset_fields
функции я:
public function reset_fields()
{
$this->reset('url.title');
}
Ошибка, которую он отображает, такова:
LivewireExceptionsPropertyNotFoundException
Property [$url.title] not found on component: [url-row]
Обходной путь, который я нашел, заключается в следующем:
<input
type="text"
wire:model.lazy="title"
wire:keydown.escape="reset_fields"
...
В компоненте, который у меня есть:
...
public $title;
...
public function mount() {
$this->title = $this->url->title;
}
public function reset_fields() {
$this->mount();
}
Так что да, это работает, но я думаю, что это не «правильный путь». Поэтому мой вопрос в том, как я использую этот reset()
метод и можно ли его использовать с объектами
Ответ №1:
при прямой привязке к свойствам модели, таким как «url.title», вы должны объявить свойство модели в правилах, таких как
public Url $url;
protected $rules = [
'url.title' => 'required'
];
....
public function reset_fields()
{
$this->url->title = null;
}
// blade
<input
type="text"
wire:model.lazy="url.title"
wire:keydown.escape="reset_fields">