I am currently struggling with a proper approach with how to organize mobile views within my project structure. Currently I am using the zend framework and have the recommended structure:

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

I am considering using the approach suggested here. However I would append my path to my views to be a subfolder rather than append for a level up so that the structure looks like:

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

However I am not familiar with zend enough to know how to have a dynamic path to my views.

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

Would this code go in the front controller or is this something better suited for the application.ini? Is there a specific function for setting paths to views folder in zend like setControllerDirectory()?

有帮助吗?

解决方案

You can map views directly in your module.config, rather than trying to get Zend to do it automatically:

'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'
    ),

Then, in your controller you can choose which view to use:

    $view = new \Zend\View\Model\ViewModel($data);
    $view->setTemplate('some_view'); //name of view in the template_map
    return $view;
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top