Как уже упоминалось, CI не позволяет вам вызывать контроллер с другого контроллера. Короткая причина в том, что контроллеры всегда создают заголовки ответа (даже если вы не загружаете какие-либо представления или не вызываете выходной класс), и вы не можете отправлять два набора заголовков HTTP в браузер.
Во время кодирования Тост я попытался взломать CI, чтобы разрешить это, но мне потребовалось очень много взломать Loader, и я пришел к выводу, что на самом деле не стоит вводить какую-то тяжелую логику ваши контролеры в любом случае. IMO, для правильной модульности MVC, эти вещи принадлежат вашим моделям, библиотекам и помощникам (которые могут быть проверены модульно с помощью Toast).