There are a lot of possibilities laid out here, but I think I would lean towards:
Idea 3 - Should I make more use of private methods within the giant controller class? Won't shrink the size of the controller, but might make some of the code more readable. Or maybe not, since I'd be scrolling all over the page to find code, instead of just reading it linearly.
I would recommend taking this approach. Looking at the sample controller method I would separate chunks into separate methods, or consider making separate controllers that would have unique methods (part of Idea 2 I guess). Ask yourself what the chunks are doing - e.g.
- setting data
- setting form validation rules
- loading page with event nav and/or adding error/success message
Having smaller, more atomic methods should allow for better unit testing. This is congruent with the Single Responsibility Principle. Like I mentioned in my review of your chess code it is wise to limit methods to 15-20
lines.
In this presentation about cleaning up code Rafael Dohms talks about limiting the indentation level to one per method and avoiding the else
keyword. (see the slides here).
I'm not very familiar with CodeIgniter but see the documentation for CI4 contains a section HTTP Feature Testing. I'd recommend reading through that page - hopefully something there will be useful.