Boil potatoes for 20 minutes, or until tender.
Meanwhile, put the haddock in a pan with the milk, bring to the boil then quickly turn the heat down.
Cover with a lid and cook for 3 minutes.
Set the haddock aside (reserving 2 tablespoons of the milk) then using a fork, separate the fish away from the skin in large flakes into a bowl.
Once the potatoes are tender, drain and mash with two-thirds of the butter, plus the 2 tablespoons of milk. Season if needed and set aside.
Fry the onion in the rest of the butter for 5 minutes until soft, but not changing colour. Set aside.
Put the spinach into a pan with 1 tablespoon of water, cover and cook for 1½ minutes on a very low heat.
Drain once the spinach has wilted slightly, then squeeze all the water from the spinach and roughly chop.
Mix the mash with the onion and spinach, then carefully mix in the fish – try to keep the flakes large.
Flour your hands then shape the mixture into 8 cakes, each about 8cm across, and dust with flour that has been seasoned with salt and pepper.
Chill the cakes for 30 minutes in the fridge.
Meanwhile, make the mayonnaise dip by mixing all the ingredients together.
Dip each cake in beaten egg, then breadcrumbs and fry in a hot pan with oil for a couple of minutes each side.
(You can fry the cakes in 2 batches, using 2 tablespoons of oil each time.)
In a pot of water place a steamer over and place roughly chopped broccoli.
Bring to the boil and steam the broccoli until it has the texture you prefer.
Serve with mayonnaise and steamed broccoli.