Компоненты - ASUPortal/ASUPortalPHP GitHub Wiki
Компоненты позволяют отображать один управляемый контроллером элемент внутри другого, например, показывать список связанных записей с текущей. При этом дочерний элемент управляется собственным контроллером и от родителя не сильно зависит.
Пример компонента:

Здесь мы видим, что вверху обычная таблица с кнопкой добавления, внизу - продолжение формы. Для того, чтобы сделать такой вот компонент необходимо:
- В код шаблона вставить компонент
{CHtml::activeComponent("путь к файлу модуля", $plan)}
Например,
{CHtml::activeComponent("workplantasks.php?plan_id={$plan->getId()}", $plan)}
Пример можно найти здесь.
- С помощью генератора модулей (или вручную) сгенерировать модуль.
- В контроллере модуля указываем, что это компонент:
class CWorkPlanGoalsController extends CBaseController{
protected $_isComponent = true;
public function __construct() {
}
- В файлах шаблона меняем родительский шаблон с
{extends file="_core.3col.tpl"}
на
{extends file="_core.component.tpl"}
Пример здесь.
В результате все действия (ссылки, формы) будут отправляться контроллеру компонента, а не родительскому. На основе этого подхода построена задача Рабочая программа, так как на AngularJS не заработал компонент выбора(