示例#1
0
 /**
  * Initializes Volt engine
  */
 public function register()
 {
     $di = $this->getDi();
     $eventsManager = $this->getEventsManager();
     $config = $this->_config;
     $moduleDirectory = $this->_module->getModuleDirectory();
     $defaultModuleDir = $this->_module->getDefaultModuleDirectory();
     $di->set('view', function () use($di, $moduleDirectory, $defaultModuleDir, $eventsManager, $config) {
         $view = new \Phalcon\Mvc\View();
         $view->setViewsDir($moduleDirectory . '/View/');
         $view->setLayoutsDir($defaultModuleDir . '/View/layouts/');
         $view->registerEngines([".volt" => 'viewEngine']);
         // Attach a listener for type "view"
         if (!$config->application->debug) {
             $eventsManager->attach("view", function ($event, $view) use($di) {
                 if ($event->getType() == 'notFoundView') {
                     $di->get('logger')->error('View not found - "' . $view->getActiveRenderPath() . '"');
                 }
             });
             $view->setEventsManager($eventsManager);
         } elseif ($config->application->profiler) {
             $eventsManager->attach("view", function ($event, $view) use($di) {
                 if ($di->has('profiler')) {
                     if ($event->getType() == 'beforeRender') {
                         $di->get('profiler')->start();
                     }
                     if ($event->getType() == 'afterRender') {
                         $di->get('profiler')->stop($view->getActiveRenderPath(), 'view');
                     }
                 }
                 if ($event->getType() == 'notFoundView') {
                     $di->get('logger')->error('View not found - "' . $view->getActiveRenderPath() . '"');
                 }
             });
             $view->setEventsManager($eventsManager);
         }
         return $view;
     });
 }
示例#2
0
 /**
  * Generate a new View object with preset parameters.
  *
  * @param array $options
  * @param \Phalcon\DiInterface $di
  * @return \Phalcon\Mvc\View
  */
 public static function getView($options = array(), \Phalcon\DiInterface $di = null)
 {
     if ($di == null) {
         $di = \Phalcon\Di::getDefault();
     }
     $defaults = array('base_dir' => FA_INCLUDE_BASE . '/', 'views_dir' => 'modules/frontend/views/scripts/', 'partials_dir' => '', 'layouts_dir' => '../../../../templates/', 'layout' => 'main');
     $options = array_merge($defaults, (array) $options);
     // Temporary fix to force "views_dir" to be the full path, because "base_dir" is not used in some Phalcon calculations.
     $options['views_dir'] = $options['base_dir'] . $options['views_dir'];
     $options['base_dir'] = '';
     $view = new \Phalcon\Mvc\View();
     $view->setDI($di);
     $eventsManager = new \Phalcon\Events\Manager();
     $view->setEventsManager($eventsManager);
     // Base directory from which all views load.
     $view->setBasePath($options['base_dir']);
     $view->setViewsDir($options['views_dir']);
     // Relative path of main templates.
     $view->setLayoutsDir($options['layouts_dir']);
     $view->setTemplateAfter($options['layout']);
     // Use present directory for partials by default.
     $view->setPartialsDir($options['partials_dir']);
     // Register template engines.
     $view->registerEngines(array(".phtml" => 'Phalcon\\Mvc\\View\\Engine\\Php', ".volt" => function ($view, $di) {
         $volt = new Volt($view, $di);
         $volt->setOptions(array('compileAlways' => FA_APPLICATION_ENV == 'development', 'compiledPath' => function ($templatePath) {
             // Clean up the template path and remove non-application folders from path.
             $templatePath = realpath($templatePath);
             $templatePath = ltrim(str_replace(FA_INCLUDE_BASE, '', $templatePath), '/');
             $find_replace = array('/views/scripts/' => '_', '../' => '', '/' => '_', '.volt' => '');
             $templatePath = str_replace(array_keys($find_replace), array_values($find_replace), $templatePath);
             return FA_INCLUDE_CACHE . '/volt_' . $templatePath . '.compiled.php';
         }));
         $compiler = $volt->getCompiler();
         $compiler->addExtension(new \FA\Phalcon\Service\ViewHelper());
         return $volt;
     }));
     return $view;
 }
示例#3
0
文件: View.php 项目: Lavoaster/PVLive
 /**
  * Generate a new View object with preset parameters.
  *
  * @param array $options
  * @param \Phalcon\DiInterface $di
  * @return \Phalcon\Mvc\View
  */
 public static function getView($options = array(), \Phalcon\DiInterface $di = null)
 {
     if ($di == null) {
         $di = \Phalcon\Di::getDefault();
     }
     $defaults = array('base_dir' => DF_INCLUDE_BASE . '/', 'views_dir' => 'modules/frontend/views/scripts/', 'partials_dir' => '', 'layouts_dir' => '../../../../templates/', 'layout' => 'main');
     $options = array_merge($defaults, (array) $options);
     $view = new \Phalcon\Mvc\View();
     $view->setDI($di);
     $eventsManager = new \Phalcon\Events\Manager();
     $view->setEventsManager($eventsManager);
     // Base directory from which all views load.
     $view->setBasePath($options['base_dir']);
     $view->setViewsDir($options['views_dir']);
     // Relative path of main templates.
     $view->setLayoutsDir($options['layouts_dir']);
     $view->setTemplateAfter($options['layout']);
     // Use present directory for partials by default.
     $view->setPartialsDir($options['partials_dir']);
     // Register template engines.
     $view->registerEngines(array(".phtml" => 'Phalcon\\Mvc\\View\\Engine\\Php', ".volt" => function ($view, $di) {
         $volt = new \Phalcon\Mvc\View\Engine\Volt($view, $di);
         $volt->setOptions(array('compiledPath' => function ($templatePath) {
             $find_replace = array(DF_INCLUDE_BASE => '', '/modules/' => '', '/views/scripts/' => '_', '/' => '_');
             $templatePath = str_replace(array_keys($find_replace), array_values($find_replace), $templatePath);
             return DF_INCLUDE_CACHE . '/volt_' . $templatePath . '.compiled.php';
         }));
         $compiler = $volt->getCompiler();
         $compiler->addFunction('helper', function ($resolvedArgs, $exprArgs) use($di) {
             return '$this->viewHelper->handle(' . $resolvedArgs . ')';
         });
         return $volt;
     }));
     // Register global escaper.
     $view->setVar('e', new \Phalcon\Escaper());
     return $view;
 }
示例#4
0
<?php

$di->set('view', function () {
    //Create an events manager
    $eventsManager = new Phalcon\Events\Manager();
    //Attach a listener for type "view"
    $eventsManager->attach("view", function ($event, $view) {
        echo $event->getType(), ' - ', $view->getActiveRenderPath(), PHP_EOL;
    });
    $view = new \Phalcon\Mvc\View();
    $view->setViewsDir("../app/views/");
    //Bind the eventsManager to the view component
    $view->setEventsManager($eventsManager);
    return $view;
}, true);
示例#5
0
文件: Web.php 项目: w3yyb/phalphp
 public function setView($viewPath = '../app/views/', $volt)
 {
     $di = $this->getDI();
     $di->set('view', function () use($viewPath, $volt) {
         $view = new \Phalcon\Mvc\View();
         $view->setViewsDir($viewPath);
         if ($volt) {
             /*
                             $view->registerEngines(
                                 array(
                                     ".volt" => 'Phalcon\Mvc\View\Engine\Volt'
                                 )
                             );*/
             $view->registerEngines(array('.volt' => function ($view, $di) {
                 $volt = new \Phalcon\Mvc\View\Engine\Volt($view, $di);
                 $volt->setOptions(array('compiledPath' => "../app/cache/", 'compiledSeparator' => '_'));
                 return $volt;
             }, '.phtml' => 'Phalcon\\Mvc\\View\\Engine\\Php'));
         }
         if ($this->_debug) {
             //	Track Views
             $eventsManager = new \Phalcon\Events\Manager();
             $eventsManager->attach("view", function ($event, $view) {
                 if ($event->getType() == 'beforeRenderView') {
                     $this->_views[] = $view->getActiveRenderPath();
                 }
             });
             $view->setEventsManager($eventsManager);
         }
         return $view;
     });
     $this->setDI($di);
 }