I agree this is often the case in poorly designed or hastily written (in the sense that the author didn’t take the time to write proper code) applications. It sure isn’t the case all the time though.
Removing a feature because certain users of the framework misuse the feature is not sane. There are endless ways of misusing software, so if you want to prevent misuse or bad programming by removing features that are misused, you’ll end up with nothing.
There are already action classes in Yii, see: https://www.yiiframework.com/doc/guide/2.0/en/structure-controllers#standalone-actions
You’re already using one that encourages good practice, see: https://www.yiiframework.com/doc/guide/2.0/en/structure-controllers#best-practices
This could be made more prominent though, that’s for sure. But at the same time, and I think this is very imporant, please realize that pretty much everyone who actually took the time to understand MVC does know that controllers should be thin.
In other words, if you don’t know this, you haven’t educated yourself enough, and this sure as heck isn’t the frameworks fault. We can’t expect a framework to educate people on the basics or fundamentals that they should already know by themselves. Just like you are expected to actually know how to write PHP code in order to use a PHP framework. The framework documentation should indeed encourage best practices and inform the user about the important ones, like Yii does in the guide above, but it’s still a framework and not a programming class.
I have written numerous MVC applications using Yii. There’s not a single controller in any of these applications that would be considered fat. Not a single one. I am not saying I’m a good programmer, I certainly don’t think I am, but I did my research. I know (at least somewhat) what MVC is about, and I know how to write proper code with it. There’s also a lot of common sense aspect to this topic.
Still you are telling me that because other people haven’t done their research, are copy-pasting code to just make things in their applications work, without even understanding what the code they’re copying actually does, and/or don’t care enough to write clean code, you want to take away a core part of the framework, which is also an extremely established pattern (with a lot of great success, considering how many working applications there is out there that’s MVC based)?
Sorry, but you are totally barking up the wrong tree here. You should be focusing on improving the documentation instead of removing stuff because people can’t write proper code. I honestly find it annoying that you suggest what you’re suggesting. Teach people to write proper code instead, and this won’t be a problem (if it ever was - if others want to write shitty code, then there’s nothing you can do to stop that anyway).
Even if this is violated, it can work perfectly well and be perfectly fine. Don’t overcomplicate things, also realize that there’s a lot to being pragmatic and that you can always refactor your code if you need to (as long as it’s clean and properly written).
If you truly want that single responsibility, you can use the other types of patterns there are. You don’t need to remove Controllers in Yii to do that.
Finally, bad programming, bad code and misuse of features in e.g. a framework isn’t something that comes from bad framework design. Yii doesn’t encourage bad programming, in fact it does the opposite, as shown above.
Bad code often comes from people not caring or not being skilled enough or lacking common sense, and that is not something that you can control entirely using the design of the framework. You can contribute to good practices by writing good documentation, but in the end, if people want to sit and copy-paste code in such a way that they just get stuff working, without caring about code quality, this is nothing you can ever put a stop to.
And after all, those people don’t care enough or have the resources to do so anyway, so let them write their crappy code and the rest of us can write clean code. Just don’t take away features in the framework just because others misuse them.
A better option would be to improve the Controller documentation in the Yii guide and the API docs, such that it’s even more clear that controllers should be thin. Just putting a notice at the top of the Controllers section in the guide, pointing out that controllers shouldn’t contain business logic, might help a lot.