Andrew Lutz, так экшн, по факту, такой же метод контроллер. Вам необязательно его выносить в отдельный файл, можно прямо внутри контроллера писать его как
public function actionSubcatsView(){ dump('Список категорий'); }
Вот про это в документации docs.instantcms.ru/dev/controllers/actions
Просто вы же в виджете хотите потом эту json строку разбирать, подготавливать и отправлять в шаблон виджета.
Вынесите подготовку чистых данных в сам контроллер. В виджет отдавайте чистые данные, а экшном — в формате json… Кода в сравнении с вашим вариантом почти не добавится, зато поддерживать такой вариант в дальнейшем будет сильно проще.
Но я не настаиваю. Просто делюсь мнением.





