如何使用数据库中的值作为 laravel livewire 中的属性
How to use values from database as properties in laravel livewire
我有一个“custom_fields”table,我在其中存储用户创建的字段。我需要使用 table 中的“field_slug”值来形成另一种形式的属性。默认情况下 public 属性不存在,因此当尝试在输入字段中输入数据时会抛出错误(“属性 [$field_name] not found on component”) .
我知道 livewire 使用 public 属性,但由于返回的数据是动态的,我无法(或不知道如何)创建那些 public 属性以在表单中使用。所以,数组中的“field_name”是我想要充当 public 属性(或者这可能是不正确的方法,不确定)所以我可以存储值由用户在输入框内输入。
如能提供有关此问题的任何有用帮助,我们将不胜感激。
CustomField 中的数据
组件
HTML(blade)
我的解决方案是在 livewire 的 mount() 方法中调用我的自定义字段查询并将值分配给自定义字段 属性。我改变了 $this->customFields 属性 中分配的值并将其分配给 $this->formSlugs 属性
public function mount()
{
$this->customFields = CustomField::all();
$data = [];
$this->formSlugs = collect($this->customFields)->map(function($value) use ($data) {
$data[$value->field_slug] = '';
return $data;
})->toArray();
}
public function render()
{
return view('livewire.inventory.items.create', ['customFields' => $this->customFields])
->extends('layouts.master')
->section('content');
}
在HTML
@foreach($customFields as $key => $customField)
<input type="text" wire:model="formSlugs.{{$key}}.{{$customField->field_slug}}" class="form-control focus:placeholder-transparent" placeholder="{{ $customField->placeholder_text }}">
@endforeach
我有一个“custom_fields”table,我在其中存储用户创建的字段。我需要使用 table 中的“field_slug”值来形成另一种形式的属性。默认情况下 public 属性不存在,因此当尝试在输入字段中输入数据时会抛出错误(“属性 [$field_name] not found on component”) .
我知道 livewire 使用 public 属性,但由于返回的数据是动态的,我无法(或不知道如何)创建那些 public 属性以在表单中使用。所以,数组中的“field_name”是我想要充当 public 属性(或者这可能是不正确的方法,不确定)所以我可以存储值由用户在输入框内输入。
如能提供有关此问题的任何有用帮助,我们将不胜感激。
CustomField 中的数据
组件
HTML(blade)
我的解决方案是在 livewire 的 mount() 方法中调用我的自定义字段查询并将值分配给自定义字段 属性。我改变了 $this->customFields 属性 中分配的值并将其分配给 $this->formSlugs 属性
public function mount()
{
$this->customFields = CustomField::all();
$data = [];
$this->formSlugs = collect($this->customFields)->map(function($value) use ($data) {
$data[$value->field_slug] = '';
return $data;
})->toArray();
}
public function render()
{
return view('livewire.inventory.items.create', ['customFields' => $this->customFields])
->extends('layouts.master')
->section('content');
}
在HTML
@foreach($customFields as $key => $customField)
<input type="text" wire:model="formSlugs.{{$key}}.{{$customField->field_slug}}" class="form-control focus:placeholder-transparent" placeholder="{{ $customField->placeholder_text }}">
@endforeach