【问题标题】:Display value when select in the dropdown livewire laravel在下拉 livewire laravel 中选择时显示值
【发布时间】:2022-01-07 09:51:32
【问题描述】:

我还是 laravel 和 livewire 的新手。我想确保用户在下拉列表中选择一个选项[ADD TRANSACTION],并且该值将根据用户选择出现在文本框[TOTAL TO BE PAID] 中。该值应该是根据用户选择的id支付的金额。

这是我做的一些代码......

添加.php

use App\Customer;
use App\Order;
class Adds extends Component
{
public $transactDate;
public $orderT;
public $amount;
public $orderss;
public $orderTotal;
public $bankacc;
public $bankname;
public $transactType;


public function render()
{
    $this->transactDate = now("Asia/Kuala_Lumpur")->toDateString();
 
    return view('livewire.adds');
}

public function mount()
{
    $this->orderT = Order::with('customer')->get();
 
}

protected $rules = [
    'orderss.orderTotal' => 'present',
];

public function display($id)
{
    $this->orderss = $this->orderT->find($id);
}
}

adds.blade

  <div class="col-sm-12 col-md-6" >
     <div class="card">
     <div class="card-body">
        <h3 class="card-title">Add Transaction</h3>
            <form action="" method="POST">
            @csrf

            <label class="form-control-label" >Transaction Date</label>
                <input type="text"  class="form-control" name="unit" wire:model="transactDate" value="{{  $transactDate }}" readonly >
                </br>

            <label class="form-control-label" >Add Transaction</label>
             <div class="form-group mb-4">
                        <select class="form-control mr-sm-2"  wire:model="orderT">
                        <option value='' selected >Select order</option>
                        @foreach ($orderT as $os)
                        @if(($os->orderStatus === 'Completed') or ($os->orderStatus === 'In process[PAID]'))
                            <option value="{{$os->id}}" > {{$os->id}}-{{$os->customer->custName}}</option>
                        @endif
                        @endforeach
                        </select>
             </div>
            
             <label class="form-control-label" >Total to be paid RM</label>
                <input type="text"  class="form-control" name="amount" value=""wire:model="orderss.orderTotal" readonly >
            </br>

                <label class="form-control-label" >Choose Type of Payment</label>
                <div class="form-group mb-4">
                        <select class="form-control mr-sm-2" wire:model="transactType">
                            <option disabled selected>Select payment</option>
                            <option value="1" >Cash</option>
                            <option value="2" >Bank Transfer</option>
                        </select>
                </div>

                <label class="form-control-label" >Bank Account Number</label>
                <input type="text"  class="form-control" name="unit" value="" placeholder="XXXXXXX" wire:model="bankacc" >
                </br>
                <label class="form-control-label" >Bank Account Name</label>
                <input type="text"  class="form-control" name="unit" value="" placeholder="eg: Bank Islam" wire:model="bankname" >
                </br>

                            <div class="form-actions">
                                <div class="text-right">
                                    <button type="submit" class="btn btn-info">Submit</button>
                                    <button type="reset" class="btn btn-dark">Reset</button>
                                </div>
                            </div>  
            </form>
                        </div>
                    </div>
确实查看图像以可视化

example image

希望任何人都可以帮助我!我最后一年的项目还有 2 个用例要完成

【问题讨论】:

  • 我不太明白你的问题是关于什么的,你能详细解释一下吗?
  • @newbie hye 我已经编辑了 :) 希望你能理解更新后的内容

标签: php laravel laravel-livewire livewires


【解决方案1】:

看看这一行

<select class="form-control mr-sm-2"  wire:model="orderT">

// instead

<select class="form-control mr-sm-2"  wire:model="selectedOrder">
   <option value=''>Select order</option>
   @foreach ($orderT as $os)
      @if(($os->orderStatus === 'Completed') or ($os->orderStatus === 'In process[PAID]'))
         <option value="{{$os->id}}" > {{$os->id}}-{{$os->customer->custName}}</option>
      @endif
   @endforeach
</select>

您在此处绑定到与您检索选项相同的属性。我建议你,创建一个新属性,例如。选择顺序

public $selectedOrder = "";
public $amount;

public function updatedSelectedOrder($value)
{
   $this->amount = Order::where('id', $value)->first()->orderTotal;
}

然后你可以将值绑定到元素上

<label class="form-control-label" >Total to be paid RM</label>
<input type="text"  class="form-control" name="amount" value=""wire:model="amount" readonly >
</br>

【讨论】:

  • 我收到了这个错误 为 foreach() 提供的参数无效,错误出现在 if 语句 @Prospero
  • $selectedOrder = "";那么该属性应该放在哪里...?
  • 所有其余代码保持不变。仅添加新属性以绑定选择元素。我更新了示例
  • 成功了 :) 谢谢。顺便说一句,如果你看我的代码,我有一个部分用户需要选择支付类型,所以当用户选择现金时,银行帐号和银行名称的输入将设置为只读,否则,如果用户选择银行转帐,然后两个输入都将被启用:) idk 怎么做.. 或者它与前一个方法几乎相同??
  • 将此添加到与输入相关的元素 @if($transactType !== "2") 只读 @endif
猜你喜欢
  • 2022-12-03
  • 1970-01-01
  • 2016-12-04
  • 1970-01-01
  • 2020-05-14
  • 2021-12-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多