如何组织MVC Zend的移动视图?

时间:2013-09-17 21:05:19

标签: zend-framework model-view-controller mobile organization

我目前正在努力采用适当的方法来处理如何在我的项目结构中组织移动视图。目前我正在使用zend框架并具有推荐的结构:

 application/
    controllers/
    models/
    modules/
        module1/
           controllers/
           views/
        module2/
           controllers/
           views/
    views/
        filters/
        helpers/
        scripts/
    Bootstrap.php

我正在考虑使用建议的方法here。但是我会将我的视图追加到我的视图中作为子文件夹,而不是附加一个级别,以便结构看起来像:

 application/
    controllers/
    models/
    modules/
        module1/
           controllers/
           views/
                mobile/
        module2/
           controllers/
           views/
                mobile/
    views/
        mobile/
        filters/
        helpers/
        scripts/
    Bootstrap.php

但是我不熟悉zend足以知道如何拥有一个动态的路径来查看我的观点。

 $viewPath = "/views";
 if($is_mobile) {
       $viewPath .= "/mobile";
 }
 //render dynamic $viewPath here.

此代码是否会在前端控制器中进行,还是更适合application.ini?是否有一个特定的函数用于设置zend中的views文件夹的路径,如setControllerDirectory()?

1 个答案:

答案 0 :(得分:1)

您可以直接在module.config中映射视图,而不是尝试让Zend自动执行:

'view_manager' => array(
    'template_map' => array(
        'layout'    => __DIR__ . '/../view/layout/layout.phtml',
        'index'     => __DIR__ . '/../view/root/index/index.phtml',
        '404'       => __DIR__ . '/../view/error/404.phtml',
        '500'       => __DIR__ . '/../view/error/index.phtml',
        'some_view'  => __DIR__.'/relative_path_from_module_config_to_your_directory/view.phtml'
    ),

然后,在您的控制器中,您可以选择要使用的视图:

    $view = new \Zend\View\Model\ViewModel($data);
    $view->setTemplate('some_view'); //name of view in the template_map
    return $view;