The easiest solution would probably to use query parameters. (I tend to not use named parameters anymore as CakePHP will drop them soon or later)
View:
echo $this->Html->link(__('add event'), array('controller' => 'events', 'action' => 'add', '?' => array('id' => 123, 'service_id' => 345, ...)));
Controller:
public function add(){
$id = isset($this->request->query['id']) ? $this->request->query['id'] : null;
$year = isset($this->request->query['year']) ? $this->request->query['year'] : null;
$service_id = isset($this->request->query['service_id']) ? $this->request->query['service_id'] : null;
...
}
This way it would be easy to have only some of the parameters.