Hi,
One of the solutions could be create service i.e.
MyAwesomeAppPluginManager with methods: navAdd(), navGet(), navGetAll(),
navExist(), etc...
Let's assume that navGetAll() will return an array of added options i.e.:
array(
0 => array('url' => 'http://domain/first_url', 'name' => 'Super
cool link from 1st plugin'),
1 => array('url' => 'http://domain/second_url', 'name' => 'Another
awesome link from 1st plugin')
)
Then you can inject this array to your view as $pluginsMenuOptions:
<nav>
<ul>
<li><a href="">Home</a></li>
<li><a href="">First link</a></li>
<li><a href="">Second link</a></li>
<?php foreach($pluginsMenuOptions as $pluginMenuOption): ?>
<li><a href="<?php echo $pluginMenuOption['url'] ?>"><?php
echo $pluginMenuOption['name'] ?></a></li>
<?php endforeach; ?>
</ul>
</nav>
After that you or someone else can create a plugin (i.e. external
library module). In Module.php method onBootstrap() one gets service
'MyAwesomeAppPluginManager' and sets navigation options by calling
navAdd() method...
Of course service 'MyAwesomeAppPluginManager' could also manage another
aspects of system (not only menu options).
That was my firstthought how it could be solved.
W dniu 06.06.2014 10:01, Emmanuel Bouton pisze:
Hello,
I'm working on a web admin interface with Zend Framework 2, and I'd like to
make it extensible by « plugins ». Great for me ZF2 provides a great
modules system :)
But I wonder how I could make « cleanly » my templates extensible.
Example :
My « core » admin would render that :
<nav>
<ul>
<li><a href="">Home</a></li>
<li><a href="">First link</a></li>
<li><a href="">Second link</a></li>
</ul>
</nav>
And I want that people could develop modules that could add links to my
main menu :
<nav>
<ul>
<li><a href="">Home</a></li>
<li><a href="">First link</a></li>
<li><a href="">Second link</a></li>
<li><a href="">Super cool link from 1st plugin</a></li>
<li><a href="">Another awesome link from 1st plugin</a></li>
<li><a href="">Great link from 2nd plugin</a></li>
</ul>
</nav>
How can I manage that in my core views / controllers ?
Thanks,
Best regards,
Emmanuel
--
*Wojciech Nowogrodzki*