私のアプリケーションでは、既存のモジュールを使用して別のドメインに基づいていくつかの異なるビューをロードするアプリケーションがあります。ZF2はドメインに基づいて別のビューを読み込みます
私のレイアウトを変更したいだけなので、自分のvriewsに関与する必要があります。 ZF2で
私のアプリケーションでは、既存のモジュールを使用して別のドメインに基づいていくつかの異なるビューをロードするアプリケーションがあります。ZF2はドメインに基づいて別のビューを読み込みます
私のレイアウトを変更したいだけなので、自分のvriewsに関与する必要があります。 ZF2で
第一パート
あなたはActionControllersでレイアウトを変更することができます。
public function indexAction()
{
$this->layout('layout/customLayout');
return $viewModel;
}
したがって、あなたがmodule.config.php(view_managerセクション)にエントリを追加する必要があります。
//... configs
'view_manager' => array(
// other configs...
'template_map' => array(
'layout/layout' => 'path to default layout',
'layout/customLayout' => 'path to custom layout',
),
),
第2部
Webサーバの設定(nginxのは、Apache)を介して:あなたはあなたのサーバー上の同じソースコードディレクトリ(あなたのZF2-プロジェクト)を指している2つのドメインを持っている3210
、両方のリクエストがIndexControllerにルーティングされます(例:アプリケーションモジュールで)。デフォルトでは、ルートはサーバーの名前(ホスト名)に依存しません。またはより良いと言えば、そのドメイン。 FYI、あなたは特定のホスト名のルートを設定できますが、これは話題にならないでしょう;)WebサーバーはPHPのいくつかの環境変数を変更します。呼び出しドメインに応じて$_SERVER
このPHP配列では、現在のサーバー名のような詳細を検出できます。 アプリケーション\コントローラ\ IndexControllerでこれを検出:
public function indexAction() {
$serverName = $this->getRequest()->getServer('SERVER_NAME');
$layout = ($serverName == 'domain2.com') ? 'layout/customLayout' : 'layout/layout';
$this->layout($layout);
// other stuff
}
私は私のモジュール(Module.php)中のもののようなものを行います。ブートストラップメソッドでは、まずsetLayoutメソッドをトリガします。しかし、まず、template_mapにレイアウトを設定する必要があります。次に、ルート、コントローラ、ホストなどに基づいてレイアウトを変更できます。論理的にグループ化するために、特定のパターンの後にルートを構築します。 ;)
public function onBootstrap(MvcEvent $e)
{
$app = $e->getParam('application');
$app->getEventManager()->attach(
'dispatch', array(
$this,
'setLayout'
));
}
public function setLayout(MvcEvent $e)
{
$matches = $e->getRouteMatch();
$routeName = $matches->getMatchedRouteName();
$controller = $matches->getParam('controller');
$serverHost = $_SERVER["HTTP_HOST"];
# ... Implement your application logic ...use Switch or sth. ...#
e->getTarget()->layout('layout/layout'); // <-- based on host and your logic
}
有用であれば1つの回答を受け入れることを忘れないでください。他の読者も同じ問題に直面しています) – BenRoob