Компоненты - ASUPortal/ASUPortalPHP GitHub Wiki

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

Пример компонента:

Здесь мы видим, что вверху обычная таблица с кнопкой добавления, внизу - продолжение формы. Для того, чтобы сделать такой вот компонент необходимо:

  1. В код шаблона вставить компонент

{CHtml::activeComponent("путь к файлу модуля", $plan)}

Например,

{CHtml::activeComponent("workplantasks.php?plan_id={$plan->getId()}", $plan)}

Пример можно найти здесь.

  1. С помощью генератора модулей (или вручную) сгенерировать модуль.
  2. В контроллере модуля указываем, что это компонент:

class CWorkPlanGoalsController extends CBaseController{

protected $_isComponent = true;

public function __construct() {

}

  1. В файлах шаблона меняем родительский шаблон с

{extends file="_core.3col.tpl"}

на

{extends file="_core.component.tpl"}

Пример здесь.

В результате все действия (ссылки, формы) будут отправляться контроллеру компонента, а не родительскому. На основе этого подхода построена задача Рабочая программа, так как на AngularJS не заработал компонент выбора(