Of course you can add all validations you need. I didn’t add them to keep the code readable and simpler.

In my project, the Search class is a bit more complex, because it covers not only the Event model but also other 2 models (Artist and LiveClub).
They have some attributes with the same name (name and address for example) so I’ve used the same Search class to build the where conditions (If I search for Artists, the event_date_after and event_date_before will be false).
Then I’ve extracted the search form as a partial and included it in the right template. In this way I can call the index method of the proper controller.

That’s why I didn’t call this class EventSearch but simply Search.
Finally note that I’ve binded the model class in the constructor.