4

我有两个模块学生和老师。我也有两种不同的布局,一种是 studentlayout.phtml,另一种是teacherlayout.phtml

如何设置学生模块的学生布局和教师模块的教师布局?

根据山姆的回答。谢谢它的工作正常。

但我也想为老师设置两种不同的布局。所以我在项目的主配置文件中添加了以下代码:

'module_layouts' => array(

    'Teacher' => array(
      'default' => 'layout/adminlayout',
      'login'    => 'layout/loginlayout',
    ),
    'Student' => 'layout/studentlayout',
),

我的教师模块的 module.config.php 文件:

    'module_layouts' => array(

    'Teacher' => array(
      'default' => 'layout/adminlayout',
      'login'    => 'layout/loginlayout',
    ),
      'Student' => 'layout/studentlayout',
 ),

但是所有时间教师模块的所有操作都采取管理布局。为什么登录操作不能采取 loginlayout?它的 ovveride?

4

2 回答 2

3

用法

使用 EdpModuleLayouts 非常非常简单。在任何模块配置或自动加载的配置文件中,只需指定以下内容:

array(
    'module_layouts' => array(
        'Teacher' => 'layout/teacher',
        'Student' => 'layout/student'
    ),
);

而已!当然,您也需要定义这些布局......只需检查应用程序模块module.config.php以了解如何定义布局。

于 2013-10-24T18:12:47.417 回答
1

如果您只想更改一个操作的布局,您可以在控制器操作中使用 layout() 插件,或者如果您只想在模块中为一个控制器中的所有操作使用不同的布局,您可以在引导程序中执行此操作:

public function onBootstrap(\Zend\EventManager\EventInterface $e) {
    $eventManager = $e->getApplication()->getEventManager();
    $sharedEventManager = $eventManager->getSharedManager();
    $sharedEventManager->attach('Auth\Controller\AuthController', \Zend\Mvc\MvcEvent::EVENT_DISPATCH, array($this, 'onDispatch'));
}

public function onDispatch(MvcEvent $e) {
    $controller = $e->getTarget();      
    $controller->layout('layout/loginLayout');
}

在该控制器中的每个操作之后,您将更改根 ViewModel 布局,您可以更进一步并在此处指定更多您想要布局的控制器,如下所示

$sharedEventManager>attach(array('Auth\Controller\AuthController',
'Auth\Controller\Registration'),
\Zend\Mvc\MvcEvent::EVENT_DISPATCH, array($this, 'onDispatch'));
}
于 2013-10-26T11:58:43.930 回答