Be part of JetBrains PHPverse 2026 on June 9 – a free online event bringing PHP devs worldwide together.

onurzdgn's avatar

Livewire 3 get sub categories when categories selected

Hello everyone, I am using Laravel 11 and Livewire 3. I am trying to take sub categories when categories selected. How ever subcategories are not come and I can't find the problem. My Livewire blade:

<div>
    {{-- Knowing others is intelligence; knowing yourself is true wisdom. --}}

    <label for="category">Kategori Seç</label>
    <select wire:model="selectedCategory" id="category">
        <option value="">Seçiniz</option>
        @foreach ($this->categories as $category)
            <option value="{{ $category->id }}">{{ $category->name }}</option>
        @endforeach
    </select>

    <div>
        <label>Alt Kategoriler:</label>
        <ul>
            @foreach ($this->subcategories as $subcategory)
                <li>{{ $subcategory->name }}</li>
            @endforeach
        </ul>
    </div>

    <script>
        $(document).ready(function() {
        // Take selected category id and write to the console
        window.addEventListener('selectedCategory', event => {
            console.log(event.detail);
        });

        window.addEventListener('no-subcategories', event => {
            console.log('Alt kategori yok');
        });
    });
    </script>
</div>

My Livewire controller:

<?php

namespace App\Livewire\Admin\Menu;

use App\Models\Categories;
use App\Models\SubCategories as ModelsSubCategories;
use Livewire\Component;

class SubCategories extends Component
{
    public $categories;
    public $subcategories = [];
    public $selectedCategory = null;

    public function mount()
    {
        $this->categories = Categories::where('is_active', 1)->get();
    }

    public function updatedSelectedCategory($categoryId)
    {
        $this->subcategories = Categories::find($categoryId)?->subcategories ?? [];

        if (empty($this->subcategories)) {
            $this->dispatchBrowserEvent('no-subcategories');
        }
    }

    public function render()
    {
        return view('livewire.admin.menu.sub-categories');
    }
}
0 likes
3 replies
zaka221's avatar

error?

try use $this->dispatch(....) not $this->dispatchBrowserEvent

onurzdgn's avatar

@zaka221 The problem is not only there. I was try what you said (it not work), however my problem is not triggered the updatedSelectedCategory function

Chingy's avatar

need to refactor to $this->dipsatch and on blade side, $wire.on('event-name', () => {}));

Please or to participate in this conversation.