2016-03-23 33 views
2

aşağıdaki şekilde phalcon içinde Volt motoru yapılandırılmış: Gördüğünüz gibiVolt derlenmiş şablonlar için üst düzey önbellek dizini nasıl ayarlanır?

// 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; 
}); 

, derlenmiş .volt.php şablonlar ../cache dizinde kaydedilmelidir ama nerede aynı klasörde oluşturulur. volt şablonları yer almaktadır. Yanlış olan ne?

BTW, yukarıdaki örnekte olduğu gibi birden çok View örneğinin paylaşılan (aynı) "volt" bileşenini kullanmak güvenli midir? Volt yapıcısının $ view argümanını aldığına dikkat edin.

Düzenleme: paylaşılan kullanmak olamaz Volt derleyici hem görünüm için ve simpleView onlar müdahale çünkü.

cevap

0

Bak bu örnek görünüm için

1) Yapılandırma 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) Bu bileşen için bileşenini

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

3) Yapılandırma id oluşturmalıdır işlevlerini kullanın için

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

4) Sonra işlevi volt:

{{ somefunctions.strtotime('val') }} 
'da kullanabilirsiniz.