Example #1
0
 /**
  * Called automatically during init for template initalization.
  *
  * @param string       $template_spot   Where object's output goes
  * @param string|array $template_branch Where objects gets it's template
  *
  * @return AbstractView $this
  *
  * @internal
  */
 public function initializeTemplate($template_spot = null, $template_branch = null)
 {
     if ($template_spot === null) {
         $template_spot = $this->defaultSpot();
     }
     $this->spot = $template_spot;
     if (@$this->owner->template && !$this->owner->template->is_set($this->spot)) {
         throw $this->owner->template->exception('Spot is not found in owner\'s template')->addMoreInfo('spot', $this->spot);
     }
     if (!isset($template_branch)) {
         $template_branch = $this->defaultTemplate();
     }
     if (isset($template_branch)) {
         // template branch would tell us what kind of template we have to
         // use. Let's look at several cases:
         if (is_object($template_branch)) {
             // it might be already template instance (object)
             $this->template = $template_branch;
         } elseif (is_array($template_branch)) {
             // it might be array with [0]=template, [1]=tag
             if (is_object($template_branch[0])) {
                 // if [0] is object, we'll use that
                 $this->template = $template_branch[0];
             } else {
                 $this->template = $this->app->add('Template');
                 /** @type Template $this->template */
                 $this->template->loadTemplate($template_branch[0]);
             }
             // Now that we loaded it, let's see which tag we need to cut out
             $this->template = $this->template->cloneRegion(isset($template_branch[1]) ? $template_branch[1] : '_top');
         } else {
             // brach could be just a string - a region to clone off parent
             if (isset($this->owner->template)) {
                 $this->template = $this->owner->template->cloneRegion($template_branch);
             } else {
                 $this->template = $this->add('Template');
             }
         }
         /** @type Template $this->template */
         $this->template->owner = $this;
     }
     // Now that the template is loaded, let's take care of parent's template
     if ($this->owner && isset($this->owner->template) && !empty($this->owner->template)) {
         $this->owner->template->del($this->spot);
     }
     // Cool, now let's set _name of this template
     if ($this->template) {
         $this->template->trySet('_name', $this->getJSID());
     }
 }