Search code examples
laravel-livewire

How to fill state/region/subregion selections when page is opened in edit mode?


In Laravel 8/livewire 2/aplinejs I need to fill state/region/subregion, which are tables in db and I select subregion from priorly selected regions and select regions from priorly selected, like

public function updatedSelectedState($state_id)
{
    $this->regionsSelectionArray       = Region::getRegionsSelectionArray($state_id, 'A');
    $this->detailsForm['state_id']     = $state_id;
}

public function updatedSelectedRegion($region_id)
{
    $this->subregionsSelectionArray    = Subregion::getSubregionsSelectionByRegionIdArray($region_id);
    $this->selectedSubregion           = null;
}

it works ok for data inserting , but when I open editor in “edit” mode and I neeed to fill initvalue I failed how do it. I remember when I made similar tasks with jquery I have common bool var which I set to true when jquery was inited. And in onChange event I checked this var . But how can I do it in livewire ?

Thanks in advance!


Solution

  • Call the below functions in your edit method Example:

    public function updatedSelectedState($state_id)
    {
    $this->changeSelectedState($state_id);
    }
    
    public function updatedSelectedRegion($region_id)
    {
    $this->changeSelectedRegion($region_id);
    }
    
    public function changeSelectedState($state_id){
    $this->regionsSelectionArray = Region::getRegionsSelectionArray($state_id, 'A');
    $this->detailsForm['state_id'] = $state_id;
    }
    
    public function changeSelectedRegion($region_id)
    {
    $this->subregionsSelectionArray = Subregion::getSubregionsSelectionByRegionIdArray($region_id);
    $this->selectedSubregion = null;
    }
    
    public function edit(){
    // $state_id = provide your state id here
    // $region_id = provide your region id here
    
    $this->changeSelectedState($state_id);
    $this->changeSelectedRegion($region_id);
    }