mi 页面有 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
也许是因为它被设置为一个数组?
$periodOptions = []; <-- Why array?
<select wire:model="periodOptionSelected"
试试
$periodOptions = "";