Phalcon Box / Helper / Partial ? How to create reusable Box in Phalcon?

Hello guys,

Is there any posibility in building view helper to render a html from a template (kind of dynamic partial)? I would like to have a box on my page, that is reading data from database and showing it under content pf the main controller.

edited Jul '14

I try to use Helpers to show my box. Here is how I try to do it, but it doesn't work:

My helper class: http://pastie.org/9412056

Calling helper in view: <?php echo TM\ViewHelpers\HityDnia::generujHityDnia(); ?>

$view->getContent() returns an empty string, where Index/index (Controller/action) normally returns a list;

What I did wrong?



84.8k

Try using Phalcon\Mvc\View\Simple instead of Phalcon\Mvc\View: http://docs.phalconphp.com/en/latest/reference/views.html#id2

But If I have view component set in app/confng/services.php

> /** > * Setting up the view component > */ > $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);

Can I use it in helper?? How to get this in helper?

edited Jul '14

I've used my Di in helper, but calling helper override controllers view ;/

> <?php > > namespace TM\ViewHelpers; > > use TM\Models\NProgramEmisja; > > class HityDnia extends \Phalcon\Tag > { > > private $di; > > public function generujHityDnia() > { > $emisjaModel = new NProgramEmisja(); > $emisje = $emisjaModel::find(array('limit' => '10')); > return $this->przygotujwidok(array('emisje' => $emisje), 'Index', 'index'); > } > > public function przygotujwidok($params, $controller, $action) > { > $this->di = $this->getDI(); > return $this->_di->get('view')->render($controller, $action, $params)->getContent(); > } > }

Using Phalcon\Mvc\View\Simple doesn't help ;/ me cause i have templates in *.volt - it doesn's see them ;/