//search RESULTprotectedarray $tagsSearchResult = [];//search INPUTpublicstring $tagsSearchInput ="";//Set the search input rules, //to validate the incoming $value before searching the Database.protected $rules = [ 'tagsSearchInput'=>... ];
2. Update the search result
// update search RESULT when search INPUT is changedpublicfunctionupdatedTagsSearchInput($value) //function name = CamelCased search input property name{//validation rules for $value are set in the $rules property//dynamically update the search result, consider ->take(...) in an eloquent queryif (filled($value)) {$this->tagsSearchResult = ['Tag1','Tag2','Tag3','Tag4','Tag5','Tag6','Tag8','Tag9','Tag10']; } else {$this->tagsSearchResult = []; //if you want to clear the search options if the user clears the search input }}
3. Define the field
protectedfunctionfields(){return [TagsSearch::make('TagsSearch','temporary_tags')->searchKey('tagsSearchInput')//search INPUT property name->fieldWidth('w-full sm:max-w-sm')->listWidth('w-full max-w-xs')->options($this->tagsSearchResult)//search RESULT property ->default(optional($this->model)->exists ? $this->model->tags()->pluck('name') : []) //model VALUE, or empty array
->debounce(500)->allowNew()//or disableNew(), true by default->custom()//saveFoo()// ->errorMsg(...)->help(...)->placeholder(...) //default in translation files// ->rules(...) //optionally see below ];}
4. Save the tags
protectedfunctionsaveTemporaryTags($validated_array){//example; remove duplicates, ucfirst on each array item $cleaned =array_map('ucfirst', array_unique($validated_array));//Spatie sync tags$this->model->syncTags($cleaned);}