true, 'options2' => false, 'options3' => false]; public $options1; public $options2; public $options3; public function mount(Plan $plan): void { $this->plan = $plan; // dd($this->unserializeOptions($plan->packet3_options)); $this->options1 = $plan->packet1_options; $this->options2 = $plan->packet2_options; $this->options3 = $plan->packet3_options; } public function render() { return view('livewire.plan.accordion'); } public function toggleAccordionState($optionName) { $this->accordionState[$optionName] = ! $this->accordionState[$optionName]; // 1. Если у нас 1 true все остальные делать false(чтобы закрывать остальные вкладки у которых не true) // a. у нас есть ключ у которого будет true // b. проходим по всем ключам accordionState и все кроме true делаем false array_map(fn ($key) => $key === $optionName ? $optionName : $this->accordionState[$key] = false, array_keys($this->accordionState)); } private function unserializeOptions($str) { if (preg_match('/^".*"$/', $str)) { return json_decode(mb_substr($str, 1, -1), true); } return json_decode($str, true); } }