コード例 #1
0
ファイル: Module.php プロジェクト: luoshulin/falcon
 /**
  *
  * Register the services here to make them module-specific
  *
  */
 public function registerServices($di)
 {
     // get bootstrap obj
     $bootstrap = $di->get('bootstrap');
     // get config class name
     $confClass = $bootstrap->getConfClass();
     // module config
     $mConfPath = __DIR__ . '/confs/' . PHALCON_ENV . '.' . PHALCON_CONF_TYPE;
     if (!is_file($mConfPath)) {
         throw new \Phalcon\Config\Exception("Module config file not exist, file position: {$mConfPath}");
     }
     if (PHALCON_CONF_TYPE == 'ini') {
         $mConfig = new $confClass($mConfPath);
     } else {
         if (PHALCON_CONF_TYPE == 'php') {
             $mConfig = new $confClass(require_once $mConfPath);
         }
     }
     // global config
     $gConfig = $di->get('config');
     // merge module config and global config, module's will override global's
     $gConfig->merge($mConfig);
     // set config back
     $di->set('config', $gConfig);
     // registering a dispatcher
     $di->set('dispatcher', function () use($di) {
         $evtManager = $di->getShared('eventsManager');
         $evtManager->attach("dispatch:beforeException", function ($event, $dispatcher, $exception) {
             switch ($exception->getCode()) {
                 case \Phalcon\Mvc\Dispatcher::EXCEPTION_HANDLER_NOT_FOUND:
                 case \Phalcon\Mvc\Dispatcher::EXCEPTION_ACTION_NOT_FOUND:
                     $dispatcher->forward(array('module' => 'sample', 'controller' => 'error', 'action' => 'show404'));
                     return false;
             }
         });
         $acl = new \BullSoft\Sample\Plugins\Acl($di, $evtManager);
         $evtManager->attach('dispatch', $acl);
         $dispatcher = new \Phalcon\Mvc\Dispatcher();
         $dispatcher->setEventsManager($evtManager);
         $dispatcher->setDefaultNamespace("BullSoft\\Sample\\Controllers\\");
         return $dispatcher;
     });
     // set view with volt
     $di->set('view', function () {
         $view = new \Phalcon\Mvc\View();
         $view->setViewsDir(__DIR__ . '/views/');
         $view->registerEngines(array(".volt" => function ($view, $di) {
             $volt = new \Phalcon\Mvc\View\Engine\Volt($view, $di);
             $volt->setOptions(array("compiledPath" => $di->get('config')->view->compiledPath, "compiledExtension" => $di->get('config')->view->compiledExtension, "compileAlways" => (bool) $di->get('config')->application->debug));
             $compiler = $volt->getCompiler();
             $compiler->addExtension(new \BullSoft\Volt\Extension\PhpFunction());
             return $volt;
         }));
         return $view;
     });
 }
コード例 #2
0
 public function pjCenterAction($raise_id)
 {
     if ($this->request->isGet()) {
         $raise_id = $this->request->getQuery('raise_id');
         if (empty($raise_id)) {
             die('invaild project');
         }
         $query = Criteria::fromInput($this->di, "DtbRaiseProjectBasic", $_GET);
         $this->persistent->parameters = $query->getParams();
         $parameters = $this->persistent->parameters;
         $dtb_raise_project_basic = DtbRaiseProjectBasic::findFirst($parameters);
         $this->view->dtb_raise_project_basic = $dtb_raise_project_basic;
         $volt = new \Phalcon\Mvc\View\Engine\Volt($this->view, $this->di);
         $compiler = $volt->getCompiler();
         $compiler->addFunction('shuffle', 'md5');
     } else {
         die('invaild error');
     }
 }
コード例 #3
0
 private static function cgiRegister()
 {
     $di = get_app_di();
     $config = self::getConfig();
     self::registCommonService($di, $config);
     $di->setShared('router', function () {
         $router = new \Phalcon\Mvc\Router();
         $router->removeExtraSlashes(true);
         $router->add('/:controller/:action/:params', array('controller' => 1, 'action' => 2, 'params' => 3));
         return $router;
     });
     $di->setShared('dispatcher', function () {
         $eventsManager = new \Phalcon\Events\Manager();
         $eventsManager->attach('dispatch:beforeException', new NotFoundPlugin());
         $dispatcher = new \Phalcon\Mvc\Dispatcher();
         $dispatcher->setEventsManager($eventsManager);
         $dispatcher->setDefaultNamespace("App\\Controllers\\");
         return $dispatcher;
     });
     $di->setShared('view', function () use($config) {
         $view = new \Phalcon\Mvc\View();
         $view->setViewsDir($config->view->templatePath);
         $view->registerEngines(array('.html' => function ($view, $di) {
             $config = $di->get('config');
             $compiledPath = $config->view->compiledPath;
             if (!file_exists($compiledPath)) {
                 mkdir($compiledPath, 0744, true);
             }
             $volt = new \Phalcon\Mvc\View\Engine\Volt($view, $di);
             $volt->setOptions(array('compiledPath' => $compiledPath, 'compiledExtension' => $config->view->compiledExtension, 'compileAlways' => isset($config->view->compileAlways) ?: false));
             $compiler = $volt->getCompiler();
             $compiler->addExtension(new VoltExtension());
             $autoEscape = isset($config->view->autoEscape) ?: true;
             ClassUtil::modifyPrivateProperties($compiler, array('_autoescape' => $autoEscape));
             return $volt;
         }));
         return $view;
     });
     $di->setShared('elements', function () {
         return new ElementsPlugin();
     });
 }
コード例 #4
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;
 }
コード例 #5
0
    session_set_cookie_params($config->app->session_lifetime);
    if ($config->app->debug != 1) {
        ini_set('session.cookie_secure', '1');
        ini_set('session.cookie_httponly', '1');
    }
    $session = new Phalcon\Session\Adapter\Files();
    $session->start();
    return $session;
});
$di->setShared('view', function () use($config) {
    $view = new Phalcon\Mvc\View\Simple();
    $view->setViewsDir(ROOTDIR . '/app/views/');
    $view->registerEngines(array('.phtml' => function ($view) use($config) {
        $volt = new Phalcon\Mvc\View\Engine\Volt($view);
        $volt->setOptions(array('compiledPath' => ROOTDIR . '/tmp/volt/', 'compiledExtension' => '.php', 'compiledSeparator' => '_', 'compileAlways' => true));
        $compiler = $volt->getCompiler();
        $compiler->addFunction('recaptcha_get_html', function () use($config) {
            return "'" . recaptcha_get_html($config->captcha->pub, null, true) . "'";
        });
        return $volt;
    }));
    return $view;
});
$di->setShared('db', function () use($config) {
    $db = new \Phalcon\Db\Adapter\Pdo\Mysql($config->db->toArray());
    $db->execute('SET NAMES UTF8', array());
    return $db;
});
$di->setShared('modelsMetadata', function () use($config) {
    if ($config->app->cache_apc) {
        $metaData = new Phalcon\Mvc\Model\MetaData\Apc(array("lifetime" => 3600, "prefix" => $config->app->suffix . "-meta-db-main"));
コード例 #6
0
ファイル: Tool.php プロジェクト: RobBickel/las
 /**
  * Register the Volt engines
  *
  * @package     las
  * @version     1.0
  *
  * @param object $view Phalcon\Mvc\View
  * @param object $di dependency Injection
  *
  * @return array array of template engines
  */
 public static function registerEngines($view, $di)
 {
     $config = \Phalcon\DI::getDefault()->getShared('config');
     $volt = new \Phalcon\Mvc\View\Engine\Volt($view, $di);
     $volt->setOptions(array('stat' => $config->app->env == 'production' ? false : true, 'compileAlways' => $config->app->env == 'development' ? true : false, 'compiledPath' => function ($templatePath) {
         list($junk, $path) = explode(ROOT_PATH, $templatePath);
         $dir = dirname($path);
         $file = basename($path, '.volt');
         if (!is_dir(ROOT_PATH . '/app/common/cache/volt' . $dir)) {
             $old = umask(0);
             mkdir(ROOT_PATH . '/app/common/cache/volt' . $dir, 0777, true);
             umask($old);
         }
         return ROOT_PATH . '/app/common/cache/volt' . $dir . '/' . $file . '.phtml';
     }));
     $compiler = $volt->getCompiler();
     $compiler->addExtension(new \Las\Extension\VoltStaticFunctions());
     $compiler->addExtension(new \Las\Extension\VoltPHPFunctions());
     return array(".phtml" => "Phalcon\\Mvc\\View\\Engine\\Php", ".volt" => $volt, ".md" => 'Las\\Extension\\Markdown');
 }
コード例 #7
0
$di->setShared('url', function () use($di) {
    $url = new \ApiDocs\Components\Url();
    $url->setBaseUri('/api/');
    return $url;
});
$di->setShared('tag', function () {
    return new \ApiDocs\Components\Tag();
});
$di->setShared('view', function () use($di) {
    $view = new Phalcon\Mvc\View();
    $view->setViewsDir(APP_ROOT . '/views/');
    $view->registerEngines(array('.phtml' => 'Phalcon\\Mvc\\View\\Engine\\Php', '.volt' => function ($view, $di) {
        $config = $di->get('config');
        $volt = new Phalcon\Mvc\View\Engine\Volt($view, $di);
        $volt->setOptions((array) $config->voltOptions);
        $volt->getCompiler()->addFunction('tr', function ($key) {
            return "translate({$key})";
        });
        return $volt;
    }));
    return $view;
});
$di->setShared('db', function () use($di) {
    $connection = new DbAdapter((array) $di->get('config')->db);
    return $connection;
});
$di->setShared('dispatcher', function () use($di) {
    $eventsManager = $di->get('eventsManager');
    $eventsManager->attach('dispatch', function ($event, $dispatcher, $exception) use($di) {
        if ($event->getType() == 'beforeException') {
            switch ($exception->getCode()) {
コード例 #8
0
ファイル: Tool.php プロジェクト: al35mm/Phalcon-Rocket
 /**
  * Register the Volt engines
  *
  *
  * @param object $view Phalcon\Mvc\View
  * @param object $di dependency Injection
  *
  * @return array array of template engines
  */
 public static function registerEngines($view, $di)
 {
     $config = \Phalcon\DI::getDefault()->getShared('config');
     $volt = new \Phalcon\Mvc\View\Engine\Volt($view, $di);
     $volt->setOptions(array('stat' => $config->app->env == 'production' ? false : true, 'compileAlways' => $config->app->env == 'development' ? true : false, 'compiledPath' => function ($templatePath) {
         //@TODO investigate the strange anomaly I got with multi sites across domains trying to render each others views!
         list($junk, $path) = explode(APP_PATH, $templatePath);
         //  print_r($path);exit;
         $dir = dirname($path);
         $file = basename($path, '.volt');
         if (!is_dir(APP_PATH . '/app/common/cache/volt' . $dir)) {
             $old = umask(0);
             mkdir(APP_PATH . '/app/common/cache/volt' . $dir, 0777, true);
             umask($old);
         }
         return APP_PATH . '/app/common/cache/volt' . $dir . '/' . $file . '.phtml';
     }));
     $compiler = $volt->getCompiler();
     $compiler->addExtension(new \Baseapp\Extension\VoltStaticFunctions());
     $compiler->addExtension(new \Baseapp\Extension\VoltPHPFunctions());
     // make Recaptcha function available in volt
     $compiler->addFunction('recaptcha', function ($resolvedArgs, $exprArgs) {
         return 'Baseapp\\Library\\Recaptcha::recaptcha(' . $resolvedArgs . ')';
     });
     // make all Helper class functions available in volt
     $helperClass = new \Baseapp\Library\Helper();
     $helpers = get_class_methods($helperClass);
     foreach ($helpers as $helper) {
         $compiler->addFunction($helper, function ($resolvedArgs, $exprArgs) use($helper) {
             return 'Baseapp\\Library\\Helper::' . $helper . '(' . $resolvedArgs . ')';
         });
     }
     // make all time class functions avaiilable in volt
     $timeClass = new \Baseapp\Library\Time();
     $timeFuncs = get_class_methods($timeClass);
     foreach ($timeFuncs as $time) {
         $compiler->addFunction($time, function ($resolvedArgs, $exprArgs) use($time) {
             return 'Baseapp\\Library\\Time::' . $time . '(' . $resolvedArgs . ')';
         });
     }
     // make all utility class functions available in volt
     $utilityClass = new \Baseapp\Library\Utility();
     $utilityFuncs = get_class_methods($utilityClass);
     foreach ($utilityFuncs as $utility) {
         $compiler->addFunction($utility, function ($resolvedArgs, $exprArgs) use($utility) {
             return 'Baseapp\\Library\\Utility::' . $utility . '(' . $resolvedArgs . ')';
         });
     }
     return array(".phtml" => "Phalcon\\Mvc\\View\\Engine\\Php", ".volt" => $volt, ".md" => 'Baseapp\\Extension\\Markdown');
 }
コード例 #9
0
//安全组件
$di->set('security', function () {
    $security = new \Phalcon\Security();
    $security->setWorkFactor(12);
    return $security;
}, true);
//volt组件
$di->set('volt', function ($view, $di) use($config) {
    $volt = new \Phalcon\Mvc\View\Engine\Volt($view, $di);
    $volt->setOptions(['compiledPath' => function ($templatePath) use($config) {
        //$dirName = str_replace('\\', '_', str_replace('/', '_', dirname(trim($templatePath, APP_PATH))));
        $dirName = str_replace('\\', '_', str_replace('/', '_', dirname(str_replace(FRONTEND_PUBLIC_PATH . 'views/default/', '', $templatePath))));
        return $config->application->voltDir . '/' . $dirName . '_' . basename($templatePath) . '.php';
    }, 'compiledExtension' => '.php', 'compiledSeparator' => '_', 'compileAlways' => $config->application->debug]);
    //设置可以调用所有方法
    $volt->getCompiler()->addExtension(new \ST\Common\Functions\STFunctionExtension());
    $compiler = $volt->getCompiler();
    //注册一些常用的方法(一般都是内置的方法)
    $compiler->addFunction('replace', 'str_replace');
    $compiler->addFilter('int', function ($resolvedArgs, $exprArgs) {
        return 'intval(' . $resolvedArgs . ')';
    });
    $compiler->addFilter('merge', 'array_merge');
    return $volt;
});
//闪存配置
$di->set('flash', function () {
    $flash = new \Phalcon\Flash\Session(['error' => 'alert alert-danger', 'success' => 'alert alert-success', 'notice' => 'alert alert-info']);
    return $flash;
});
//系统日志