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

Zend に自動的にビューをマップさせるのではなく、module.config で直接ビューをマップすることができます。

'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 に答える