1
$di = new \Phalcon\DI\FactoryDefault();

/**
 * The URL component is used to generate all kind of urls in the application
 */
$di->set('url', function() use ($config) {
    $url = new \Phalcon\Mvc\Url();
    $url->setBaseUri($config->application->baseUri);
    return $url;
});

$di->set('voltService', function()  {
    $volt = new Phalcon\Mvc\View\Engine\Volt($view, $di);
    $volt->setOptions(array(
        "compiledPath" => "../app/compiled/",
        "compiledExtension" => ".php"
    ));
    return $volt;
});

/**
 * Setting up the view component
 */
$di->set('view', function() use ($config) {
    $view = new \Phalcon\Mvc\View();
    $view->setViewsDir($config->application->viewsDir);
    $view->registerEngines(array(".phtml" => 'voltService'));
    return $view;
});

私はこの記事を使用します:http://docs.phalconphp.com/en/0.6.0/reference/volt.html、しかしヒントエラーメッセージ

Notice: 未定義の変数: view in /var/www/html/phalconblog/public/index.php の 40 行目

注意: 未定義の変数: /var/www/html/phalconblog/public/index.php の 40 行目の di

致命的なエラー: 42 行目の /var/www/html/phalconblog/public/index.php の未定義メソッド Phalcon\Mvc\View\Engine\Volt::setOptions() の呼び出し

4

1 に答える 1

3

私もそれを試してみましたが、同様の問題がありました-理由はわかりません。

編集

正しい方法は次のとおりです。

// Register Volt as a service
$di->set(
    'volt', 
    function($view, $di) 
    {
        $volt = new Phalcon\Mvc\View\Engine\Volt($view, $di);

        $volt->setOptions(
            array(
                'compiledPath'      => $config->volt->path,
                'compiledExtension' => $config->volt->extension,
                'compiledSeparator' => $config->volt->separator,
                'stat'              => (bool) $config->volt->stat,
            )
        );

        return $volt;
    }
);

// Register Volt as template engine
$di->set(
    'view', 
    function() 
    {
        $view = new \Phalcon\Mvc\View();
        $view->setViewsDir($config->application->viewsDir);

        $view->registerEngines(array(".volt" => 'volt'));

        return $view;
    }
);

以下は回避策ですが、お勧めしません。

/**
 * Setting up the view component
 */
$di->set(
    'view', 
    function() use ($config, $di) 
    {
        $view = new \Phalcon\Mvc\View();
        $view->setViewsDir($config->application->viewsDir);

        $volt = new \Phalcon\Mvc\View\Engine\Volt($view, $di);
        $volt->setOptions(
            array(
                'compiledPath'      => $config->volt->path,
                'compiledExtension' => $config->volt->extension,
                'compiledSeparator' => $config->volt->separator,
                'stat'              => (bool) $config->volt->stat,
            )
        );

        /**
         * Register Volt
         */
        $view->registerEngines(array('.phtml' => $volt));

        return $view;
    }
);
于 2012-10-31T14:29:06.273 に答える