Я столкнулся с проблемой Livewire, из-за которой атрибуты, установленные с помощью методов setAttribute() и setRelation() в методе mount(), отсутствуют после отправки формы.< /p>
Признак: HasEloquentModel
trait HasEloquentModel
{
#[Locked]
public ?Model $model = null;
public function getModel()
{
if (isset($this->model)) {
if ($this->model instanceof Model) {
return $this->model;
}
return app($this->model);
}
return str(class_basename(static::class))->beforeLast('Component')->prepend('App\\Models\\')->toString();
}
}
Компонент Livewire: AssigneeFormComponent
use HasEloquentModel;
public function mount($slug, $id)
{
$assignee = app(AssigneePost::class); // Pivot Table
$post = app(Post::class);
$currentRouteName = Route::currentRouteName();
if($currentRouteName === 'assignees.create') {
$post = $post->query()->where(compact('slug', 'id'))->firstOrFail();
$assignee->setRelation('post', $post);
$assignee->setAttribute('post_id', $post->id);
$assignee->setAttribute('user_id', auth()->id());
} elseif($currentRouteName === 'assignees.edit') {
$assignee = $assignee->query()->with('post')
->where('id', $id)
->whereRelation('post', 'slug', '=', $slug)
->firstOrFail();
}
$this->model = $assignee;
//...
}
public function attemptSubmit()
{
$validated = $this->validate();
$this->getModel()->fill($validated)->save();
//...
}
При редактировании формы поля post_id и user_id остаются неизменными. Однако для новой формы Assignee мы получаем post_id и user_id из метода mount(), тогда как вне его они остаются неизменными. Форма содержит такие поля, как контент, тип, статус, утвержденный_at, утвержденный_по и т. д., проверяемые после отправки формы. После успешной отправки все поля, включая post_id и user_id, сохраняются в базе данных. Но я столкнулся с ошибкой:
SQLSTATE[HY000]: Общая ошибка: 1364 Поле «post_id» не имеет
значения по умолчанию< /p>
Когда я dd($this->getModel()) после отправки формы, атрибуты пользовательского набора отсутствуют.$assignee->setRelation('post', $post); // -----------> Missing
$assignee->setAttribute('post_id', $post->id); // -----------> Missing
$assignee->setAttribute('user_id', auth()->id()); // -----------> Missing
Подробнее здесь: https://stackoverflow.com/questions/783 ... er-form-su
Livewire: пользовательские значения setAttribute() и setRelation() исчезают после отправки формы ⇐ Php
Кемеровские программисты php общаются здесь
1714268587
Anonymous
Я столкнулся с проблемой Livewire, из-за которой атрибуты, установленные с помощью методов setAttribute() и setRelation() в методе mount(), отсутствуют после отправки формы.< /p>
Признак: [b]HasEloquentModel[/b]
trait HasEloquentModel
{
#[Locked]
public ?Model $model = null;
public function getModel()
{
if (isset($this->model)) {
if ($this->model instanceof Model) {
return $this->model;
}
return app($this->model);
}
return str(class_basename(static::class))->beforeLast('Component')->prepend('App\\Models\\')->toString();
}
}
Компонент Livewire: [b]AssigneeFormComponent[/b]
use HasEloquentModel;
public function mount($slug, $id)
{
$assignee = app(AssigneePost::class); // Pivot Table
$post = app(Post::class);
$currentRouteName = Route::currentRouteName();
if($currentRouteName === 'assignees.create') {
$post = $post->query()->where(compact('slug', 'id'))->firstOrFail();
$assignee->setRelation('post', $post);
$assignee->setAttribute('post_id', $post->id);
$assignee->setAttribute('user_id', auth()->id());
} elseif($currentRouteName === 'assignees.edit') {
$assignee = $assignee->query()->with('post')
->where('id', $id)
->whereRelation('post', 'slug', '=', $slug)
->firstOrFail();
}
$this->model = $assignee;
//...
}
public function attemptSubmit()
{
$validated = $this->validate();
$this->getModel()->fill($validated)->save();
//...
}
При редактировании формы поля post_id и user_id остаются неизменными. Однако для новой формы Assignee мы получаем post_id и user_id из метода mount(), тогда как вне его они остаются неизменными. Форма содержит такие поля, как контент, тип, статус, утвержденный_at, утвержденный_по и т. д., проверяемые после отправки формы. После успешной отправки все поля, включая post_id и user_id, сохраняются в базе данных. Но я столкнулся с ошибкой:
SQLSTATE[HY000]: Общая ошибка: 1364 Поле «post_id» не имеет
значения по умолчанию< /p>
Когда я dd($this->getModel()) после отправки формы, атрибуты пользовательского набора отсутствуют.$assignee->setRelation('post', $post); // -----------> Missing
$assignee->setAttribute('post_id', $post->id); // -----------> Missing
$assignee->setAttribute('user_id', auth()->id()); // -----------> Missing
Подробнее здесь: [url]https://stackoverflow.com/questions/78396837/livewire-custom-setattribute-and-setrelation-values-disappear-after-form-su[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия