Beispiel #1
0
 /**
  * 2015-12-12
  * Важно инициализировать дочерний филдсет именно здесь,
  * а не в методе @see \Df\Framework\Form\Element\Fieldset::addField(),
  * потому что к моменту завершения вызова @see \Df\Framework\Form\Element\Fieldset::addField()
  * дочерний филдсет должен быть уже инициализирован:
  * внутри вызова @see \Df\Framework\Form\Element\Fieldset::addField()
  * вызывается метод  @see \Df\Framework\Form\Element\Fieldset::onFormInitialized(),
  * дочерние реализации которого уже требуют полной инициализации дочернего филдсета.
  * @override
  * @see \Magento\Framework\Data\Form\Element\AbstractElement::addElement()
  * @used-by \Magento\Framework\Data\Form\AbstractForm::addField()
  * @param AE $element
  * @param bool $after [optional]
  * @return $this
  */
 public function addElement(AE $element, $after = false)
 {
     /**
      * 2015-12-12
      * Экзотическая конструкция «instanceof self» вполне допустима:
      * https://3v4l.org/nWA6U
      */
     if ($element instanceof self) {
         /**
          * 2015-12-12
          * В ядре уже есть магические методы setContainer() / getContainer(),
          * и я сначала пробовал использовать их, однако порой ядро пихает туда
          * не родительский филдсет, а чёрти чё:
          * @see \Magento\Framework\Data\Form\Element\Collection::add()
          * $element->setContainer($this->_container);
          * https://github.com/magento/magento2/blob/2.0.0/lib/internal/Magento/Framework/Data/Form/Element/Collection.php#L110
          * Здесь вот ядро пихает туда форму: объект класса @see \Magento\Framework\Data\Form
          * Поэтому разработал свой способ учёта иерархии.
          */
         $element->_parent = $this;
     }
     parent::addElement($element, $after);
     return $this;
 }