あなたがする必要があるのは、すべてのビュー変数を配列に格納し、配列を返すことです。追加の機能が必要でない限り、ViewModelやJsonModelなどのクラスや戦略は必要ありません。
コントローラのアクション関数が配列を返す限り、それらの値をビューに渡すことができます。
そのようです:
public function indexAction()
{
$current_user = $this->getSession();
return array(
'current_user' => $current_user
);
}
そして実際にZF2に移行するには、Zend_Registryの代わりにServiceManagersとServiceLocatorsを使用します。まだ存在しない場合は、getServiceConfig()という関数を作成することにより、Module.phpファイルでサービスマネージャーを割り当てることができます。少しこのように見えるはずです。
public function getServiceConfig()
{
'factories' => array(
'session' => function ($sm){
return new Session($sm->get('Zend/Db/Adapter/Adapter'));
}
)
}
これは、service_managerを使用してグローバルconfig/autoloadファイルのdatabase.local.phpファイルを介してdbアダプターを追加することも検討します。
そのようです:
<?php
$Params = array(
'database' => 'YOUR DATABASE',
'username' => 'YOUR USERNAME',
'password' => 'YOUR PASSWORD',
'hostname' => 'YOUR HOSTNAME',
);
return array(
'service_manager' => array(
'factories' => array(
'Zend\Db\Adapter\Adapter' => function ($sm) use ($Params) {
return new Zend\Db\Adapter\Adapter(array(
'driver' => 'pdo',
'dsn' => 'mysql:dbname='.$Params['database'].';host='.$Params['hostname'],
'database' => $Params['database'],
'username' => $Params['username'],
'password' => $Params['password'],
'hostname' => $Params['hostname'],
));
},
このすべての後、コントローラーでServiceLocatorを使用する単純な関数を使用して、Sessionクラスまたは使用するものを簡単に取得できます。
protected $session;
public function getSession()
{
if($this->session == null)
{
$sl = $this->getServiceLocator();
$this->session = $sl->get('session');
}
return $this->session;
}