laravel wire:ignore使livewire中的属性为空

zlwx9yxi  于 2023-08-08  发布在  其他
关注(0)|答案(1)|浏览(103)

我在我的livewire项目中使用了一个choices-tags选择列表,选项是permissionCategories,我创建了一个这样的属性

public function getPermissionCatsProperty(){
        return PermissionCategory::get();
    }

字符串
并且此permissionCategory具有其权限的子级,当我编辑角色时,我希望在选择列表中选中此角色的权限
这是我在名为choices-select的组件中创建的选择列表

<div class="row">
    <div class="col-12">
        <label class="mt-4 form-label">Tags</label>
        <select class="form-control" name="{{$name}}" id="choices-tags" multiple>
            {{$slot}}
        </select>
    </div>
</div>

@push('js')
    <script src="../../../assets/js/plugins/choices.min.js"></script>

    <script>
        if (document.getElementById('choices-tags')) {
            var tags = document.getElementById('choices-tags');
            const examples = new Choices(tags, {
                removeItemButton: true
            });
        }
    </script>
@endpush


我用的是这样的形式

<div wire:ignore>
                        <x-choices-select :name="'permissions[]'">
                            <option value="">Select Permission</option>
                            @if(isset($this->permissionCats))
                                @foreach($this->permissionCats as $category)
                                    <optgroup label="{{$category->name}}">
                                        @if(isset($category->permissions))
                                            @foreach($category->permissions as $permission)
                                                <option value="{{$permission->id}}" {{@$role->hasPermissionTo($permission->name) ? :'selected' : ''}}>{{@$permission->name}}</option>
                                            @endforeach
                                        @endif
                                    </optgroup>
                                @endforeach
                            @endif
                        </x-choices-select>
                    </div>

$role变量来自这里

public $role;
    public function edit($role_id)
    {

        $this->resetValidation();
        $this->role = Role::firstWhere('id', $role_id);

        $this->modalType = 'edit';
        $this->dispatchBrowserEvent('show-modal', ['modal_id' => 'create_role']);

    }

  • permissionCats工作正常,但问题出在$role变量中,我确信$role变量在表单中的每个地方都工作正常,因为当我编辑某些角色时,表单模态中的字段会采用我试图编辑的$role的值。但问题是,当我为选择列表使用wire:ignore时,$role变量在选择列表中变为null,但如果我这次不对选择列表使用wire:ignore*,$role变量工作正常,但选择列表的类和js却逃脱了。我尝试了一切我可以解决它,但我不能,我甚至试图把选择列表在一个livewire组件为它自己和使用它在第一个,每当我试图编辑一个角色,我做发射它与**$role**变量,但它仍然没有工作,并未来空的选择列表。

如果你知道如何解决这个问题,请帮助我,谢谢大家。

izkcnapc

izkcnapc1#

您提供的代码足以提供帮助。提供包含<form>.....</form>标记和edit方法(例如wire:submit.prevent='edit({{ $role_id }})')的完整模态表单

相关问题