我正在开发一个php mvc框架,并且面临一个问题,即在布局中呈现视图,由控制器提供服务。 例如,登录框对于站点的所有页面都是通用的。这是我的布局:
<?= $this->partial('layouts/header') ?>
<aside class="login-box">
<?= $this->partial('indexController', 'loginboxAction');
</aside>
<section class="main">
<?= $this->content() ?>
</section>
<?= $this->partial('layouts/footer') ?>
静态或接近静态的页眉/页脚模板没有问题,但是用户块可以改变它的状态,并且它的行为可以由控制器管理(如indexController
所做的那样)。
如何制作这样的partial
方法,可以做出这样的魔术?看起来我需要强制FrontController
为这个控制器渲染整个MVC,不是吗?但效率很低。或者我认为错了,这样的块,如用户盒,可以只是一个视图,而不与控制器链接?
我理解,我的问题很抽象,我没有提供代码,但它更多是架构问题,而不是技术问题。
答案 0 :(得分:1)
我可以考虑不同的方法:
如您所述,请为该组件调用 MVC三元组。如果你说这是低效的,也许你必须重构调度请求的部分(这种技术称为HMVC)。
以某种方式将视图模型/编辑器附加到该组件,例如Laravel的View Composers。 看看这个:http://laravel.com/docs/responses#view-composers
从模板中调用查看助手。您的View组件可以注册一组视图助手,您可以从任何模板中调用它们。 Zend Framework默认提供了一组有用的视图助手,请查看:http://framework.zend.com/manual/2.3/en/modules/zend.view.helpers.html