【问题标题】:How to Sum every rows data in dinamic field input Laravel Livewire如何对动态字段输入 Laravel Livewire 中的每一行数据求和
【发布时间】:2021-02-05 00:48:17
【问题描述】:

我输入了动态字段,因此我可以添加更多列并将其删除。在此输入中,我有一个列 total_price,在价格上我需要 price * qty 。但我不知道如何在多个输入上做到这一点。我只能在单个输入上做到这一点。我的表格和livewire是这样的:

  1. 表格

       <form>
         <button wire:click.prevent="add({{$i}})">
         Add 
         </button>
    
         <input type="hidden" wire:model="newid.0">
    
         <input wire:model="nama_barang.0" type="text" />
         <input wire:model="qtt.0" type="text" />
         <input wire:model="price.0" type="text" />
         <input wire:model="qty.0" type="text" /> 
         <input wire:model="total_price" type="text" /> // here the problem
    
         @foreach($inputs as $key => $value)
         <input wire:model="nama_barang.{{ $value }}" type="text" />
         <input wire:model="qtt.{{ $value }}" type="text" />
         <input wire:model="price.{{ $value }}" type="text" />
         <input wire:model="qty.{{ $value }}" type="text" /> 
         <input wire:model="total_price" type="text" /> // on here i get the problem
    
         @endforeach
    
         <button wire:click.prevent="store()">Submit</button>
     </form>
    

这是我的电汇

public $belanja_id, $nama_barang, $qtt,$newid;
public $updateMode = false;
public $inputs = [];
public $i = 1;
public $total_price ;
public $price= [] ;
public $qty = [];

public function add($i)
{
    $i = $i + 1;
    $this->i = $i;
    array_push($this->inputs ,$i);
}

public function mount($id)
{
   $belanja = $this->belanja = Belanja::findOrFail($id);
   $this->newid = $belanja->id;
   $this->k_uraian = $belanja->uraian;

} 

public function remove($i)
{
    unset($this->inputs[$i]);
}

public function render()
{
    $this->total_price =array_sum($this->price) * array_sum($this->qty)   ; // i try with this but only get 1 rows , can someone help ?
    
    return view('livewire.input-belanja-lw');
}

你可以在这个picture 上看到我的表格(你最好看看这张照片,这样你就可以知道我的问题),我不能加上总和总价格。那么有人可以帮忙吗?

我的参考来自这个网站site

更新。我的输入现在是正确的,但我的商店有错误

这是我的商店功能

 public function store()
{
    

    foreach ($this->nama_barang as $key => $value) {
       $bel = AnakBelanja::create([
            'belanja_id' => $this->newid,
            'nama_barang' => $this->nama_barang[$key], 
            'qtt' => $this->qtt[$key],
            'price' => $this->price[$key],
            'qty' => $this->qty[$key]
            ]);        
    }

    $this->inputs = [];

    $this->resetInputFields();


    return redirect()->route('detail', $bel->belanja_id);

    $this->emit('alert', ['type' => 'success', 'message' =>'Succes Melakukan Input / Update']);

}

【问题讨论】:

    标签: laravel laravel-livewire


    【解决方案1】:

    因为你这样做是不可能的所以我做了一些修复试试这个

    组件

    public $belanja_id, $nama_barang, $qtt, $newid;
    public $updateMode = false;
    public $inputs = [
        [
            "newid" => "",
            "nama_barang" => "",
            "qtt" => "",
            "price" => "",
            "qty" => "",
            "total_price" => "",
        ]
    ];
    
    public function render()
    {
        return view('livewire.input-belanja-lw');
    }
    
    public function add()
    {
        array_push($this->inputs, [
            "newid" => "",
            "nama_barang" => "",
            "qtt" => "",
            "price" => "",
            "qty" => "",
            "total_price" => "",
        ]);
    }
    
    public function mount($id)
    {
        $belanja = $this->belanja = Belanja::findOrFail($id);
        $this->newid = $belanja->id;
        $this->k_uraian = $belanja->uraian;
    }
    
    public function remove($i)
    {
        unset($this->inputs[$i]);
    }
    

    刀片

    <form>
        <button wire:click.prevent="add()">
            Add
        </button>
    
        @foreach($inputs as $key => $value)
        <input type="hidden" wire:model="inputs.{{ $key }}.newid" value="{{ $key }}">
        <input wire:model="inputs.{{ $key }}.nama_barang" type="text" />
        <input wire:model="inputs.{{ $key }}.qtt" type="text" />
        <input wire:model="inputs.{{ $key }}.price" type="text" />
        <input wire:model="inputs.{{ $key }}.qty" type="text" />
        <input value="{{ (int)$value['price'] * (int)$value['qty']  }}" type="text" />
        <br>
        @endforeach
    
        <button wire:click.prevent="store()">Submit</button>
    </form>
    

    【讨论】:

    • 等我试试
    • 好的,先生,我可以再问 1 个问题吗?我怎样才能总结这一切 total_price ?所以我可以显示所有 total_price 的总数?
    • 我在商店有问题。这是错误 为 foreach() 提供的参数无效
    • 在你的商店$this-&gt;nama_barang as $key$this-&gt;inputs as $key 我猜应该是这样的
    • get error Trying access array offset on value of type null
    猜你喜欢
    • 2023-02-22
    • 1970-01-01
    • 2021-04-14
    • 2021-08-10
    • 2020-01-12
    • 1970-01-01
    • 2022-07-26
    • 1970-01-01
    • 2021-09-18
    相关资源
    最近更新 更多