Admin と Login の 2 つのモジュールがあります。
管理ビュー「index.html」内にログインビュー「login.phtml」を表示したい
管理モジュールのindexActionコントローラーに次のものがあります
public function indexAction()
{
$login = new LoginController();
$view = new ViewModel(array(
'theloginform' => $login->loginAction(),
));
return $view;
}
Login コントローラーの LoginAction メソッドで、「login.phtml」ファイルの ViewModel を返します。
public function LoginAction() {
$view = new ViewModel();
return $view;
}
変数「theloginform」がオブジェクトであるため、indexAction はエラーをスローします。
Catchable fatal error: Object of class Zend\View\Model\ViewModel could not be converted to string in...
次を追加すると:
$authentication->loginAction()->captureTo('test')
「index.phtml」は文字列「content」を示しています。
ビュー変数 'theloginform' に割り当てる前に ViewModel をレンダリングする必要があるかもしれないことを読みましたが、それを機能させることができないようです。
public function LoginAction() {
$view = new ViewModel();
$renderer = new PhpRenderer();
$resolver = new Resolver\AggregateResolver();
$map = new Resolver\TemplateMapResolver(array(
'login' => __DIR__ . '/../view/login.phtml'
));
$resolver->attach($map);
$view->setTemplate("login");
return $renderer->render($view);
}
次のエラーが発生した場合:
Zend\View\Renderer\PhpRenderer::render: Unable to render template "login"; resolver could not resolve to a file
autoload_classmap.php ファイルに DI を追加しようとしましたが、それでも同じエラーが発生します。login.phtml ファイルが正しいパスにあることを再確認しました。
「/Login/view/login/login/login.phtml」「/Login/src/Login/view/login.phtml」にコピーしました
非常に混乱して、Zend のドキュメントを読んでから読み直しました。ビューを別のビューに渡したいだけです...