Boil whole potatoes in their skins for 30-40 mins, or until tender (timing depends on their size). 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 poach for 3 mins or until just cooked. Set the haddock aside (reserving 2tbsp of the milk), then remove the skin from the fish and fork the flesh into large flakes.
Once the potatoes are tender, drain and remove skins. Mash the flesh with two-thirds of the butter, plus the 2tbsp milk. Season if you like and let cool.
Fry the onion in the rest of the butter for 5 mins until soft, but not coloured. Put the spinach into a pan with 1 tbsp water, cover and cook for 1½ mins on a very low heat. Drain, 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 and not overwork the mixture. Flour your hands then shape the mixture into 8 cakes, each about 8cm across, and dust with seasoned flour. Chill the cakes for 30 mins. Meanwhile, make the mayo by mixing all the ingredients together.
Dip each cake in beaten egg, then breadcrumbs and fry in the hot oil for a couple of mins each side. (You can fry the cakes in 2 batches, using 2 tbsp of oil each time.) Serve with mayo and broccoli. If cooking from frozen, defrost overnight before reheating.