2

私は次のコードを持っています:

    $di->set('view', function() {

    $view = new \Phalcon\Mvc\View();

    $view->setViewsDir('../app/views/');

    $view->registerEngines(array(
        ".phtml" => 'Phalcon\Mvc\View\Engine\Volt'
    ));

    return $view;
});

しかし、コンパイルされたPHPはviewsディレクトリにあります。コンパイルされたディレクトリに別のパスを設定するにはどうすればよいですか?

4

1 に答える 1

5

新しいcompiledPathオプションとその他のオプションは次のように設定できます。

構成に次の変数があると想定します。

[views]
path      = '/home/user/www/app/views/'

[volt]
path      = '/home/user/www/app/volt/'
extension = '.compiled'
separator = '%%'
stat      = 1

その後、マニュアルに従ってこれを行うことができます:

// Assuming that this is in a class and `_di` is your DI container 
$config = $this->_di->get('config');
$di     = $this->_di;

/**
 * Setup the volt service
 */
$this->_di->set(
    'volt',
    function($view, $di) use($config)
    {
        $volt = new Volt($view, $di);
        $volt->setOptions(
            array(
                'compiledPath'      => $config->app->volt->path,
                'compiledExtension' => $config->app->volt->extension,
                'compiledSeparator' => $config->app->volt->separator,
                'stat'              => (bool) $config->app->volt->stat,
            )
        );
        return $volt;
    }
);

/**
 * Setup the view service
 */
$this->_di->set(
    'view',
    function() use ($config, $di)
    {
        $view = new \Phalcon\Mvc\View();
        $view->setViewsDir(ROOT_PATH . $config->app->path->views);
        $view->registerEngines(array('.volt' => 'volt'));
        return $view;
    }
);

または、以下の実装に従うことができます(上記のものが推奨されます)

$di->set('view', function() use ($config, $di) {

    $view = new \Phalcon\Mvc\View();

    $view->setViewsDir($config->views->path);

    $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('.volt' => $volt));

    return $view;
});

$config->volt->path書き込み可能であることを確認してください。上記のアプローチに正確に従う必要はありません。アプリケーションが必要とするものでいつでも構成変数を置き換えることができます。

于 2012-10-31T13:25:46.620 に答える