2016-03-23 12 views
2

は、私は次のようにPhalconにボルトエンジンを構成し:あなたが見ることができるようにVoltコンパイル済みテンプレートのトップレベルキャッシュディレクトリを設定するにはどうすればよいですか?

// create dependency injector 
$di = new Phalcon\DI\FactoryDefault(); 

// configure Volt compiler 
$di->set('volt', function($view, $di) { 
    $volt = new \Phalcon\Mvc\View\Engine\Volt($view, $di); 
    $volt->getCompiler() 
      ->addFunction('strtotime', 'strtotime') 
      ->addFunction('money_format', 'money_format') 
      ->addFunction('slownie', 'Kwota::getInstance()->slownie'); 
    $volt->setOptions(array(
     'compiledPath' => '../cache/' // this directory EXISTS 
    )); 
    return $volt; 
}); 

// configure View for backend actions 
$di->set('view', function() { 
    $view = new Phalcon\Mvc\View(); 
    $view->setViewsDir('../app/51/views/'); 
    $view->registerEngines(['.volt' => 'volt']); 
    return $view; 
}); 

// configure View for custom content like E-mails, print-view, etc. 
$di->set('simpleView', function() { 
    $view = new Phalcon\Mvc\View\Simple(); 
    $view->setViewsDir('../app/volt/'); 
    $view->registerEngines(['.volt' => 'volt']); 
    return $view; 
}); 

は、コンパイル.volt.phpテンプレートは../cacheディレクトリに保存する必要がありますが、それらがどこに同じフォルダに生成されます。ボルトテンプレートが配置されています。なにが問題ですか?

ところで、上記の例のように、複数のViewインスタンスで共有(同じ)ボルトコンポーネントを使用することは安全ですか? Voltコンストラクタが$ view引数を受け取ることに注意してください。

編集:彼らは干渉しているため、あなたが両方ビューsimpleViewの共有ボルトコンパイラを使用することはできません。

答えて

0

見て、このサンプルのビューの

1)コンフィグID

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

$view = new View(); 

$view->setViewsDir($config->application->viewsDir); 

$view->registerEngines(array(
    '.volt' => function ($view, $di) use ($config) { 

      $volt = new VoltEngine($view, $di); 

      $volt->setOptions(array(
       'compiledPath' => $config->application->cacheDir, 
       'compiledSeparator' => '_' 
      )); 
      return $volt; 
     }, 
    '.phtml' => 'Phalcon\Mvc\View\Engine\Php' 
)); 
return $view;}, true); 

2)あなたは、このコンポーネントのコンポーネントに

use Phalcon\Mvc\User\Component; 
class Somefunctions extends Component { 
    public function strtotime($val){ 
     . 
     . 
     return $result; 
    } 
} 

3)コンフィグIDを作成する必要があります関数を使用するために

$di->set('somefunctions', function(){ 
return new Somefunctions();}); 

4)そして、ボルトで関数を使うことができます:

{{ somefunctions.strtotime('val') }} 
関連する問題