0

我目前正在努力寻找如何在我的项目结构中组织移动视图的正确方法。目前我正在使用 zend 框架并具有推荐的结构:

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

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

 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?是否有像 setControllerDirectory() 那样在 zend 中设置视图文件夹路径的特定函数?

4

1 回答 1

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;
于 2013-09-17T21:49:09.713 回答