ZF2与同名的冲突布局

时间:2014-02-05 10:21:52

标签: php layout module zend-framework2 twig

我正在尝试使用ZF2框架,并尝试在SF2中执行非常独立的模块,例如bundle。

我有ZfcTwig有Twig来渲染我的观点。这一直有效,直到我创建了第二个模块。

-Application (default module)
-Admin
  -view
     index.twig
  -layout
     base.twig
-Blog
  -view
     index.twig
  -layout
     base.twig

问题是我的Blog布局扩展了Admin基础布局!

我已根据http://blog.evan.pro/module-specific-layouts-in-zend-framework-2

完成了我的结构布局

所以在Module.php中我都是这样的:

public function init($moduleManager)
{
    $sharedEvents = $moduleManager->getEventManager()->getSharedManager();
    $sharedEvents->attach(__NAMESPACE__, 'dispatch', function($e) {
        $controller = $e->getTarget();
        $controller->layout('layout/base.twig');
    }, 100);
}

另外我不明白为什么我要在Module.php的init函数中定义两次布局,第二次在twig视图的扩展函数中定义。

如果我有不同的名字,请确保其工作。

我看到了这个模块:https://github.com/EvanDotPro/EdpModuleLayouts 但我认为,如果没有这个,就应该有可能拥有真正独立的模块,因为它是框架的哲学。

1 个答案:

答案 0 :(得分:0)

默认情况下,ZfcTwig使用两步视图模式以" zf方式"工作。 如果要使用原始树枝系统(用于扩展),则必须在配置文件中指定它。

评论很好:

/**
* If set to true disables ZF's notion of parent/child layouts in favor of
* Twig's inheritance model.
*/
        'disable_zf_model' => true,

这样,您将使用extends说明控制您的布局。