タイトルの通り、Router 内の DBAdapter にアクセスするのに苦労しています。ServiceLocatorAwareInterface の実装はあまり役に立ちません (ZF2 は何も注入しません)。カスタムファクトリを使用してモジュールでサービスとして宣言することもオプションではありません。これは、Http/Parts ルーターを拡張し、ルートに応じて渡される構成パラメーターを必要とするためです (ハードコーディングしたくありません)。
私がすでに試したこと:
module.config.php:
(...)
'router' => array(
'routes' => array(
'adm' => array(
'type' => 'Custom\Mvc\Router\Http\Segment',
'options' => array(
'route' => '/admin[/:language[/:controller[/:action[/:params]]]]',
'constraints' => array(
'language' => '(pl|en)',
'controller' => "[a-zA-Z0-9_\-]*",
'action' => "[a-zA-Z0-9_\-]*",
'params' => "(.*)",
),
'defaults' => array( ... ),
),
'may_terminate' => true,
),
),
),
'service_manager' => array(
(...)
'invokables' => array(
'Custom\Mvc\Router\Http\Segment' => 'Custom\Mvc\Router\Http\Segment',
),
),
(...)
現在のところ、Custom\Mvc\Router\Http\Segment は Zend\Mvc\Router\Http\Segment の単なるコピーであり、インターフェイス ServiceLocatorAwareInterface、AdapterAwareInterface およびそれぞれのメソッドが同様の方法で追加されています。
public function setServiceLocator(ServiceLocatorInterface $serviceLocator)
{
var_dump($serviceLocator);
exit();
}
setServiceLocator メソッドに入ることはなく、RouteInterface::factory() のみに入り、コンストラクターを呼び出します。
ファクトリをセットアップしても役に立ちませんでした。コードは実行されません。「invocables」またはファクトリをアプリケーション構成に移動した後の同じ動作。
現在 Zend Framework 2 RC1 を使用しています