addPartialPath() public method

Add partial path for use inside partial and partialLoop helpers
public addPartialPath ( string $path ) : View
$path string
return View
Example #1
0
 /**
  * Get new View instance
  *
  * @return View
  */
 protected function getView()
 {
     $view = new View();
     // setup default partial path
     $view->addPartialPath($this->getApp()->getPath() . '/layouts/partial');
     return $view;
 }
Example #2
0
 /**
  * Magic cast to string
  *
  * @return string
  */
 public function __toString()
 {
     if (!$this->template) {
         return '';
     }
     // $view for use in closure
     $view = new View();
     $path = Application::getInstance()->getPath();
     // setup additional helper path
     $view->addHelperPath($path . '/layouts/helpers');
     // setup additional partial path
     $view->addPartialPath($path . '/layouts/partial');
     // setup default path
     $view->setPath($path . '/modules/' . $this->module . '/views');
     // setup template
     $view->setTemplate($this->template);
     // setup data
     $view->setFromArray($this->getData()->toArray());
     return $view->render();
 }
Example #3
0
 /**
  * Do dispatch
  * @param string $module
  * @param string $controller
  * @param array $params
  * @throws ApplicationException
  *
  * @return View|callable
  */
 protected function doDispatch($module, $controller, $params = array())
 {
     Logger::info("---:dispatch:do: " . $module . '/' . $controller);
     $controllerFile = $this->getControllerFile($module, $controller);
     $reflection = $this->reflection($controllerFile);
     if ($reflection->getCache()) {
         $cacheKey = 'view:' . $module . ':' . $controller . ':' . http_build_query($params);
         if ($cachedView = Cache::get($cacheKey)) {
             return $cachedView;
         }
     }
     // process params
     $params = $reflection->params($params);
     // $view for use in closure
     $view = new View();
     // setup additional helper path
     $view->addHelperPath($this->getPath() . '/layouts/helpers');
     // setup additional partial path
     $view->addPartialPath($this->getPath() . '/layouts/partial');
     // setup default path
     $view->setPath($this->getPath() . '/modules/' . $module . '/views');
     // setup default template
     $view->setTemplate($controller . '.phtml');
     $bootstrapPath = $this->getPath() . '/modules/' . $module . '/bootstrap.php';
     /**
      * optional $bootstrap for use in closure
      * @var \closure $bootstrap
      */
     if (file_exists($bootstrapPath)) {
         $bootstrap = (require $bootstrapPath);
     } else {
         $bootstrap = null;
     }
     unset($bootstrapPath);
     /**
      * @var \closure $controllerClosure
      */
     $controllerClosure = (include $controllerFile);
     if (!is_callable($controllerClosure)) {
         throw new ApplicationException("Controller is not callable '{$module}/{$controller}'");
     }
     $result = $controllerClosure(...$params);
     // switch statement for $result
     switch (true) {
         case $result === false:
             // return false is equal to disable view and layout
             $this->useLayout(false);
             return function () {
                 // just empty closure
             };
         case is_callable($result):
         case is_object($result):
             // return closure is replace logic of controller
             // or return any class
             return $result;
         case is_string($result):
             // return string is equal to change view template
             $view->setTemplate($result);
             break;
         case is_array($result):
             // return array is equal to setup view
             $view->setFromArray($result);
             break;
     }
     if (isset($cacheKey)) {
         Cache::set($cacheKey, $view, $reflection->getCache());
         Cache::addTag($cacheKey, $module);
         Cache::addTag($cacheKey, 'view');
         Cache::addTag($cacheKey, 'view:' . $module);
         Cache::addTag($cacheKey, 'view:' . $module . ':' . $controller);
     }
     return $view;
 }
Example #4
0
 /**
  * Initial controller view
  *
  * @param  string $module
  * @param  string $controller
  * @return View
  */
 protected function initView($module, $controller)
 {
     // $view for use in closure
     $view = new View();
     // setup additional helper path
     $view->addHelperPath($this->getPath() . '/layouts/helpers');
     // setup additional partial path
     $view->addPartialPath($this->getPath() . '/layouts/partial');
     // setup default path
     $view->setPath($this->getPath() . '/modules/' . $module . '/views');
     // setup default template
     $view->setTemplate($controller . '.phtml');
     return $view;
 }