Забейте на MVC, он просто предлагает делить зоны отвественности между слоями, сами буковки для красоты и примера.
вот смотри, у тебя есть модель tariff и ты ей там же через массив передаёшь параметры.
ты пишешь $tariff = Tariff::findById(1); // SELECT * FROM tariff WHERE id =?
затем тебе нужно скривать старые тарифы.
$tariff = Tariff::findById(1); // SELECT * FROM tariff WHERE id =? AND hide <> 0
Затем у тебя тариф привязывается к городу и т.д.
Все эти правки ты делать водном месте в методе Tariff::findById, а плюсами пользуешься по всему коду.
Контроллер, у твоём варианте ты пока делаешь валидацию и работу с данными формы через него, а затем это надоест и создашь классы validator и form и постепенно через рефакторинг нафигачишь десяток слоёв, которые будут хорошо делать только свою задачу. Но не надо имея легаси код сразу продумывать как ты разделишь классы, нужно рефакторить и плесать от того, что получается.