在布局MVC PHP中呈现动态视图


Render dynamic view in layout MVC PHP

我正在开发一个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. 正如您所提到的,为该组件调用MVC三元组。如果你说这是低效的,也许你必须重构分发请求的部分(这种技术称为HMVC)。

  2. 以某种方式附加一个视图模型/作曲家到该组件,像Laravel的视图作曲家。看看这个:http://laravel.com/docs/responses#view-composers

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