为什么我在第三个下拉菜单中选择一个选项时或者如果我第二次在第一个选项中选择一个选项时会出现此错误?带电

问题描述 投票:0回答:1

mi 页面有 3 个下拉菜单,它们按照以下步骤工作:

  1. 第一个下拉菜单叫做客户端,用户可以选择一个用户。
  2. 名为公司的下拉列表不依赖于客户下拉列表
  3. 称为期间的下拉列表仅取决于公司下拉列表

这仅在您按顺序选择客户和公司时有效

这里不起作用的步骤:

  • 在公司下拉列表中选择一个选项,然后在 客户下拉列表或期间下拉列表

当我这样做时,我得到这个错误:

但是调试说

$option
不是一个数组,它是一个对象

这是我的 livewire 组件代码:

    public $clientOptionSelected, $companyOptionSelected, $periodOptionSelected;
public $clientOptions = [], $companyOptions = [], $periodOptions = [];

protected $rules = [
    'clientOptionSelected' =>  'required',
    'companyOptionSelected' => 'required',
    'periodOptionSelected' => 'required'
];

public function updated($propertyName)
{
    $this->validateOnly($propertyName);
}

public function render()
{
    $this->clientOptions = DB::select('exec SP_PG @opc=:opc',['opc' => 4]);
    $this->companyOptions = DB::select('exec SP_PG @opc=:opc',['opc' => 5]);
    return view('livewire.create-company-component');
}

public function submit()
{
    $this->validate();
   //$result = DB::select('exec SP_PG @opc=:opc , @idCliente=:idCliente , @idBaseDatos=:idVaseDatos',['opc' => 7,'idCliente' =>$this->clientOptionSelected,'idBaseDatos' => $this->periodOptionSelected]);
}

public function updatedCompanyOptionSelected()
{
    $this->periodOptions = DB::select('exec SP_PG @opc=:opc,@descripcion=:descripcion',['opc' => 6 , 'descripcion' => $this->companyOptionSelected]); 
}

还有我的 HTML 代码:

<div>
    <form wire:submit.prevent="submit" method="POST">
        @csrf
        <label>Selecciona un Cliente</label>
        <select wire:model="clientOptionSelected" name="client" class="form-control" id="cbxCliente">
            <option value="">Selecciona una opción</option>
            @foreach ($clientOptions as $option)
                <option value="{{ $option->val }}">{{ $option->text }}</option>
            @endforeach
        </select>
        @error('clientOptionSelected')
            <span class="error">{{ $message }}</span>
        @enderror
        <br>
        <label>Selecciona una Empresa</label>
        <select wire:model="companyOptionSelected" name="company" class="form-control" id="cbxEmpresa">
            <option value="">Selecciona una opción</option>
            @foreach ($companyOptions as $option)
                <option value="{{ $option->val }}">{{ $option->text }}</option>
            @endforeach
        </select>
        @error('companyOptionSelected')
            <span class="error">{{ $message }}</span>
        @enderror
        <br>
        <label>Selecciona una Periodo</label>
        <div wire:loading.remove>
            <select wire:model="periodOptionSelected" name="period" class="form-control" id="cbxPeriodo">
                <option value="">Selecciona una opción</option>
                @foreach ($periodOptions as $option)
                    <option value="{{ $option->val }}">{{ $option->text }}</option>
                @endforeach
            </select>
        </div>
        @error('periodOptionSelected')
            <span class="error">{{ $message }}</span>
        @enderror
        <div wire:loading class="form-control spinner-border" role="status">
            <span class="sr-only">Loading...</span>
        </div>
        <br>
        <button class="btn btn-success" id="btnSave">Guardar</button>
    </form>
</div>

我发现这个,当我使用第二个选择变量的值

$periodOptions

Array
(
[0] => stdClass Object
    (
        [val] => 
        [text] => Selecciona una opción
    )

[1] => stdClass Object
    (
        [val] => 79
        [text] => AHL Quincena
    )

[2] => stdClass Object
    (
        [val] => 80
        [text] => Periodo Extraordinario
    )

[3] => stdClass Object
    (
        [val] => 81
        [text] => PTR MENSUAL
    )

[4] => stdClass Object
    (
        [val] => 82
        [text] => PTR mensual NO TIMBRAR
    )

 )

但是当我在第三次或第一次选择一个选项时,为此值更改:

Array
(
[0] => stdClass Object
    (
        [val] => 
        [text] => Selecciona una opción
    )

[1] => Array
    (
        [val] => 57
        [text] => COL QUINCENA
    )

[2] => Array
    (
        [val] => 58
        [text] => NNB QUINCENAL
    )

[3] => Array
    (
        [val] => 59
        [text] => PAN QUINCENAL
    )

[4] => Array
    (
        [val] => 60
        [text] => Periodo Extraordinario
    )

[5] => Array
    (
        [val] => 61
        [text] => Quincenal
    )

[6] => Array
    (
        [val] => 62
        [text] => STU BIF NITTI QUINCENAL
    )

)
1
            
            
            
laravel dropdown laravel-livewire
1个回答
0
投票

也许是因为它被设置为一个数组?

$periodOptions = []; <-- Why array?

<select wire:model="periodOptionSelected"

试试

$periodOptions = "";
© www.soinside.com 2019 - 2024. All rights reserved.