How can I build a combined search without making all fields required?
When you submit the form you have above, it's already going to have those parameters in the URL even if they have no form values selected.

http://example.com/?dateFrom=&amp;dateUntil=&amp;country=&amp;priceMin=&amp;priceMax=


But you may have the need to directly link to http://example.com/?country=France, or empty parameters may cause errors in your template. If that's the case you probably need to define default values for missing and empty parameters. The easiest way to do this is with the Twig default filter.

{% set country = craft.request.getParam('country') | default(null) %}


The null value should work as a default for some parameters. If there are other parameters you can't easily create a default for or you only want to use parameters if they're defined, you could create an array of your default options, and then use the Twig merge filter to add more options based on conditions.

{% set options = {
  section: 'events',
  order: 'score'
} %}

{% if dateFrom %}
  {% set options = options | merge({ start: '&gt;=' ~ dateFrom }) %}
{% endif %}

{% set results = craft.entries(options) %}


Optionally, you can use the ternary operator shorthand syntax instead of {% if dateFrom %}. Whichever is easier.

`{% set options = dateFrom ? options | merge({ start: '&gt;=' ~ dateFrom }) : options %}`