Honestly, the way you described what is happening seems like something I would expect to be the "expected behavior". The reason I say this is because when you forward to a new action, let's say it belongs to a different controller, that other controller may have some initialization logic to restrict access, for example.
So in your case, you're seeing the initialize funciton called when indexAction is called, but then you forward that to the "future" action, which should also trigger the initialize class for whatever that controller belongs to.
What I would recommend is something like this:
<?php
namespace MyApp\Frontend\Controllers;
use Phalcon\Mvc\Dispatcher;
class ControllerBase extends \Phalcon\Mvc\Controller
{
private $mainAssetsLoaded = false;
protected function initialize()
{
// Check to see if the assets have been loaded or not
if($this->mainAssetsLoaded === false){
$this->assets
// Bootstrap
->addCss('css/bootstrap.min.css')
->addCss('css/style.css');
$this->assets
->collection('footer')
// jQuery (necessary for Bootstrap's JavaScript plugins)
->addJs('js/jquery/jquery-1.11.2.min.js')
// Bootstrap and plugins
->addJs('js/bootstrap/bootstrap.min.js');
}
// Indicate that the assets have been loaded
$this->mainAssetsLoaded = true;
}
...
}