【问题标题】:laravel Livewire updating specific category on multiple dropdownslaravel Livewire 在多个下拉列表中更新特定类别
【发布时间】:2021-12-09 06:58:16
【问题描述】:

我正在尝试使用下拉菜单更新表格字段。我已经让它只处理单行数据,但我无法让 livewire 跟随行。我认为这是我应该寻找的地方,但我没有关注该做什么。 https://laravel-livewire.com/docs/2.x/nesting-components

[前三行的屏幕截图][1] [1]:https://i.stack.imgur.com/znG96.png 第一个下拉列表基本上是一类类别,第二个下拉列表是我要分配给事务的特定类别。

主视图

@livewire('transaction-category', ['types'=>$types], key($types->type))

组件

<div>
    <td class="border" >
        <select name="types" wire:model="types" class="inv_select ">
            <option value=''>Choose Category Class</option>
            @foreach($types as $t)
                <option value={{ $t->type }}>{{ $t->type }}</option>
            @endforeach
        </select>
    </td>
    //@if(count($subclass>0)
    <td>
        <select name="subclass" wire:model="subclass" class="inv_select">
            <option value=''>Choose Category</option>
            @foreach($subclass as $s)
                <option value={{ $s->type }}>{{ $s->type }}</option>
            @endforeach
        </select>
    </td>
    //@endif
</div>

Livewire 模型

namespace App\Http\Livewire;

use Livewire\Component;
use App\Models\Category;

class TransactionCategory extends Component
{
    public $types;
    public $subclass=[];
    
    public function mount(){
        $this->types=Category::select('type')->groupby('type')->get();

    }
    public function updatedTypes(){
        dd($this->subclass =Category::subs($this->types));
        $this->subclass =Category::subs($this->types);
    }
    public function render()
    {           
        return view('livewire.transaction-category');     
    }  
}

【问题讨论】:

    标签: laravel laravel-livewire


    【解决方案1】:

    您需要更好地了解 livewire 对公共属性的含义以及集合之间的区别。我不清楚你的表循环的模型是什么,所以我假设是一个事务模型。

    我的方法首先是

    @livewire('transaction-category', ['transaction' => $transaction], key($transaction->id))
    
    public Transaction $transaction;
    public $selectedType, $selectedSub;
    public $types, $subclass;
    
    public function mount(){
      // I'm going to improve with your code
      $this->types = Category::all();
      $this->subclass = Collection()->empty();
    }
    public function updatedSelectedType($value)
    {
      if($value) {
        $this->subclass = Category::subs($this->types)->get();
      } else {
        $this->subclass = Collection()->empty();
      }
    }
    

    和刀片元素

    <div>
        <td class="border" >
            <select name="types" wire:model="selectedType" class="inv_select ">
                <option value=''>Choose Category Class</option>
                @foreach($types as $t)
                    <option value={{ $t->type }}>{{ $t->type }}</option>
                @endforeach
            </select>
        </td>
        @if(count($subclass))
        <td>
            <select name="subclass" wire:model="selectedSub" class="inv_select">
                <option value=''>Choose Category</option>
                @foreach($subclass as $s)
                    <option value={{ $s->type }}>{{ $s->type }}</option>
                @endforeach
            </select>
        </td>
        @endif
    </div>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-05-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多