app/Http/Controllers/SearchController.php
public function advanced(ServerRequestInterface $request, Tree $tree): ResponseInterface
    {
        $default_fields = array_fill_keys(self::DEFAULT_ADVANCED_FIELDS, '');

        $fields      = $request->get('fields', $default_fields);
        $modifiers   = $request->get('modifiers', []);
        $other_field = $request->get('other_field', '');
        $other_value = $request->get('other_value', '');

        if ($other_field !== '' && $other_value !== '') {
            $fields[$other_field] = $other_value;
        }

        $other_fields = $this->otherFields($fields);
        $date_options = $this->dateOptions();
        $name_options = $this->nameOptions();

        if (!empty(array_filter($fields))) {
            $individuals = $this->search_service->searchIndividualsAdvanced([$tree], $fields, $modifiers);
        } else {
            $individuals = [];
        }

        $title = I18N::translate('Advanced search');

        return $this->viewResponse('search-advanced-page', [
            'date_options' => $date_options,
            'fields'       => $fields,
            'individuals'  => $individuals,
            'modifiers'    => $modifiers,
            'name_options' => $name_options,
            'other_fields' => $other_fields,
            'title'        => $title,
        ]);
    }
public function advanced(ServerRequestInterface $request, Tree $tree): ResponseInterface
    {
        $default_fields = array_fill_keys(self::DEFAULT_ADVANCED_FIELDS, '');

        $fields      = $request->get('fields', $default_fields);
        $modifiers   = $request->get('modifiers', []);
        $other_field = $request->get('other_field', '');
        $other_value = $request->get('other_value', '');

        if ($other_field !== '' && $other_value !== '') {
            $fields[$other_field] = $other_value;
        }

        $other_fields = $this->otherFields($fields);
        $date_options = $this->dateOptions();
        $name_options = $this->nameOptions();

        if (!empty(array_filter($fields))) {
            $individuals = $this->search_service->searchIndividualsAdvanced([$tree], $fields, $modifiers);
        } else {
            $individuals = [];
        }

        $title = I18N::translate('Advanced search');

        return $this->viewResponse('search-advanced-page', [
            'date_options' => $date_options,
            'fields'       => $fields,
            'individuals'  => $individuals,
            'modifiers'    => $modifiers,
            'name_options' => $name_options,
            'other_fields' => $other_fields,
            'title'        => $title,
        ]);
    }
public function advanced ( ServerRequestInterface $ request , Tree $ tree ) : ResponseInterface { $ default_fields = array_fill_keys ( self :: DEFAULT_ADVANCED_FIELDS , '' ) ; $ fields = $ request -> get ( 'fields' , $ default_fields ) ; $ modifiers = $ request -> get ( 'modifiers' , [ ] ) ; $ other_field = $ request -> get ( 'other_field' , '' ) ; $ other_value = $ request -> get ( 'other_value' , '' ) ; if ( $ other_field !== '' && $ other_value !== '' ) { $ fields [ $ other_field ] = $ other_value ; } $ other_fields = $ this -> otherFields ( $ fields ) ; $ date_options = $ this -> dateOptions ( ) ; $ name_options = $ this -> nameOptions ( ) ; if ( ! empty ( array_filter ( $ fields ) ) ) { $ individuals = $ this -> search_service -> searchIndividualsAdvanced ( [ $ tree ] , $ fields , $ modifiers ) ; } else { $ individuals = [ ] ; } $ title = I18N :: translate ( 'Advanced search' ) ; return $ this -> viewResponse ( 'search-advanced-page' , [ 'date_options' => $ date_options , 'fields' => $ fields , 'individuals' => $ individuals , 'modifiers' => $ modifiers , 'name_options' => $ name_options , 'other_fields' => $ other_fields , 'title' => $ title , ] ) ; }
A structured search.

@param ServerRequestInterface $request
@param Tree                   $tree

@return ResponseInterface
A structured search .