예제 #1
0
 public function loadFragmentAsString($name = NULL, $folder = NULL, $data = NULL)
 {
     $args = func_get_args();
     $data = NULL;
     if (array_key_exists(2, $args)) {
         $data = $args[2];
         if (empty($data)) {
             return FALSE;
         }
     }
     String::mustBeNotEmpty($name, "Fragment name must be a non empty string");
     if (!String::isString($folder)) {
         $folder = $this->_controller;
     }
     $name = trim($name);
     $fw = DI::get('config')->framework;
     if (!isset($fw->fragments) || empty($fw->fragments)) {
         throw new \Exception("Don't know how to load fragments, no path was specified in configuration");
     }
     $ds = DIRECTORY_SEPARATOR;
     $fragment = sprintf('%s%s%s%s', Kernel::getAppDir(), $ds, $fw->fragments, $ds);
     $fragment = sprintf('%s%s%s%s', $fragment, $folder, $ds, $name);
     $fragment = new \apf\core\File($fragment);
     $this->assignConfigVars();
     ob_start();
     if ($this->fragmentDebug) {
         echo "<div class=\"__apf_fragment_debug\">";
     }
     require $fragment;
     if ($this->fragmentDebug) {
         echo "</div>";
     }
     $content = ob_get_contents();
     ob_end_clean();
     return $content;
 }