【问题标题】:Laravel Livewire - Get all checkbox valueLaravel Livewire - 获取所有复选框值
【发布时间】:2021-03-01 19:45:08
【问题描述】:

我想在我的桌子上添加过滤器。我的过滤器是帐户的安全级别。 这是我的 HTML

<input type="checkbox" value="O" wire:model="level" id="O">
<label for="O">O</label>
<input type="checkbox" value="a" wire:model="level" id="a">
<label for="a">A</label>
<input type="checkbox" value="b" wire:model="level" id="b">
<label for="b">B</label>
<input type="checkbox" value="c" wire:model="level" id="c">
<label for="c">C</label>

还有我的 Livewire 组件:

<?php

namespace App\Http\Livewire;

use Livewire\Component;
use App\Models\User;

class Compliance extends Component
{

    public $level = [];

    public function render()
    {
        return view('livewire.compliance', [
            'customers' => $this->row
        ]);
    }

    public function getRowsQueryProperty()
    {
        $query = User::query()
            ->when($this->level, fn($query, $levels) => $query->level($levels));

        return $query;
    }

    public function getRowsProperty()
    {
        return $this->rowsQuery->paginate(20);
    }
}

我的问题是: $this->level 总是只有一个值,而不是像数组这样的值

[
     0 => 'O',
     1 => 'a'
]

我希望每次选中或取消选中复选框时都选中所有复选框。 感谢阅读

【问题讨论】:

  • 在livewire中你可以做点符号吗?所以不做 level.0, level.1 ... 就够了吗?
  • 在 HTML 中?我已经尝试在wire:model中使用level.a level.b,但总是同样的问题,在渲染中我有一个数组,其中0 =>'a'或0 =>'b'但从来没有2值同一个数组

标签: php laravel laravel-livewire


【解决方案1】:

你可以添加wire:click。例如,像这样更改您的输入字段:

<input type="checkbox" wire:click="levelClicked" value="a" wire:model="level" id="a">

并在 Compliance 组件中,添加一个新方法:

public function levelClicked()
{
    // now the property $this->level will contain all the selected values
}

【讨论】:

  • 只是给像我这样的菜鸟的评论:level var 必须声明为 public $level = [];在组件中,否则所有复选框将立即检查。
【解决方案2】:

好的,可以单击并附加到数组,或者从刀片执行类似的操作。

<form>
  @foreach($checkboxes as $checkbox)
         <div class="mt-1">
              <label class="inline-flex items-center">
              <input type="checkbox" value="{{ $checkbox->id }}" wire:model="level.{{ $checkbox->id }}" class="form-checkbox h-6 w-6">
                   <span class="ml-3 text-sm">{{ $checkbox->name }}</span>
               </label>
          </div>
  @endforeach
</form>

这样当你提交表单时,所有的值都会在$level数组中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-17
    • 1970-01-01
    • 2017-04-03
    • 2021-03-10
    • 1970-01-01
    • 2011-07-08
    相关资源
    最近更新 更多