在布局MVC PHP中渲染动态视图

时间:2014-07-06 11:16:57

标签: php templates

我正在开发一个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,不是吗?但效率很低。或者我认为错了,这样的块,如用户盒,可以只是一个视图,而不与控制器链接?

我理解,我的问题很抽象,我没有提供代码,但它更多是架构问题,而不是技术问题。

1 个答案:

答案 0 :(得分:1)

我可以考虑不同的方法:

  1. 如您所述,请为该组件调用 MVC三元组。如果你说这是低效的,也许你必须重构调度请求的部分(这种技术称为HMVC)。

  2. 以某种方式将视图模型/编辑器附加到该组件,例如Laravel的View Composers。 看看这个:http://laravel.com/docs/responses#view-composers

  3. 从模板中调用查看助手。您的View组件可以注册一组视图助手,您可以从任何模板中调用它们。 Zend Framework默认提供了一组有用的视图助手,请查看:http://framework.zend.com/manual/2.3/en/modules/zend.view.helpers.html