3

ZF2には2つの異なるテンプレートマップが必要です。1つは管理者用、もう1つはフロントエンド用です。現在ZF2は、構成した2つのモジュールで使用されている2つのmodule.config.phpファイルをマージし、テンプレートマップを作成します。管理者がフロントモジュールにもロードされるように設定する必要があります。

/Application module.config.php

...
'view_manager' => array(
        'display_not_found_reason' => true,
        'display_exceptions'       => true,
        'doctype'                  => 'HTML5',
        'not_found_template'       => 'error/404',
        'exception_template'       => 'error/index',
        'template_map' => array(
            'layout/layout'           => __DIR__ . '/../view/layout/layout.phtml',
            'application/index/index' => __DIR__ . '/../view/application/index/index.phtml',
            'error/404'               => __DIR__ . '/../view/error/404.phtml',
            'error/index'             => __DIR__ . '/../view/error/index.phtml',
        ),
        'template_path_stack' => array(
            __DIR__ . '/../view',
        ),
...

/admin module.config.php

...
'view_manager' => array(
        'template_path_stack' => array(
            'admin' => __DIR__ . '/../view',
        ),
        'template_map' => array(
            'layout/layout'           => __DIR__ . '/../view/layout/layout.phtml',
        ),
    ),
...

2つの別々のモジュールに別々の「view_manager」配列をロードできるようにするには、何を変更する必要がありますか?

4

3 に答える 3

1

私もこの問題を抱えていました。以下のモジュールで提案されているアプローチを採用しました

https://github.com/EvanDotPro/EdpModuleLayouts

于 2012-11-26T06:51:42.830 に答える
1

なぜこれを達成しようとしているのかを説明できれば素晴らしいと思います。私が見ることができるように、あなたは管理者のために異なるレイアウトを作ろうとしています。https://github.com/zf-commons/zfcadminで試していることをすでに実行できる、このモジュールを確認したいと思うかもしれません。このモジュールには、管理ルート用のレイアウト設定があります。

于 2012-11-18T11:39:35.463 に答える
1

私はZF2を初めて使用し、ダッシュボード、管理者、フロントエンド用にまったく異なるテンプレートを作成する方法についての回答を探していました。

EdpModuleLayoutsはここや他の多くの投稿で提案されているように使用しました。これにより、問題の1つの側面が解決されました。レイアウト。同じテンプレートを使用している場合や、パスワードを忘れた、登録、ログインなどで別のレイアウトを証明したい場合にうまく機能する、同じテンプレートに異なるレイアウトを提供できるようになりました。しかし、私はしませんでした。まったく異なるフォルダーのセット、cssファイルなどが必要でした。この時点で、すべてのテンプレートをテンプレートフォルダーにネストし、レイアウトファイル内のリンクを適切なフォルダーにポイントすることができました。しかし、私もこれを望んでいませんでした。

また、zfc-adminモジュールをアプリに含めて、ファイルに直接別のソースを提供するという他の側面についての手がかりを与えました。(後でアンインストール)

だから私に以下を追加して追加するmodule_name/config/module.config.php

'view_manager' => array(
        'template_path_stack' => array(
                __DIR__ . '/../view'
        ),
),

以下のコードを有効EdpModuleLayoutsapplication.config.phpしてアプリケーションに追加しますmodule.config.php

'module_layouts' => array(
    'Application' => 'layout/layout',
    'Dashboard' => 'layout/dashboard',
    'Admin' => 'layout/admin',
),

これはおそらくそれを行うための最良の方法ではありませんが、うまくいきました。この方法で実際に確認できる唯一の問題は、EdpModuleLayoutsがApplication/view/layoutフォルダーからすべてのレイアウトをプルしたいということです。ただし、作業中のモジュールのビューセクションにすべてのモジュールテンプレートファイルを保持することができました。

于 2014-03-21T21:48:11.717 に答える