ConfiguratorChain を使ってみる

作成中のアプリケーションを Piece_Unity 0.11.0 の新機能であり、次の次のバージョン (1.0.0?) でデフォルトになるという ConfiguratorChain を使うように変更してみたので、そのときのメモです。

piece-unity-config.yaml にて

まずはコンフィギュレータを ConfiguratorChain に変更。

- name: Root
  point:
    - name: configurator
      type: extension
      value: ConfiguratorChain

そして KenelConfigurator の設定を削除し、Configurator_Plugin とConfigurator_Validation の設定を追加。
KenelConfigurator の設定ポイント validationConfigDirectory および validationCacheDirectory は、Configurator_Validation ではそれぞれ configDirectory, cacheDirectory に名前が変わっているので注意。

- name: Configurator_Plugin
  point:
    - name: pluginDirectories
      type: configuration
      value:
        - /local/plugin/dir
        - /remote/plugin/dir

- name: Configurator_Validation
  point:
    - name: configDirectory
      type: configuration
      value: ../webapp/config/validations
    - name: cacheDirectory
      type: configuration
      value: ../webapp/cache/validations

エントリポイントにて

Dispatcher_Simple を使うエントリポイントで eventName を設定していたので拡張ポイント名を KernelConfigurator から Configurator_Event に。

 $eventName = 'SomeEvent';
 $config = &new Piece_Unity_Config();
-$config->setConfiguration('KernelConfigurator', 'eventName', $eventName);
+$config->setConfiguration('Configurator_Event', 'eventName', $eventName);
 $config->setExtension('Controller', 'dispatcher', 'Dispatcher_Simple');

アクションクラスにて

Dispatcher_Simple で Piece_Right を使う場合は、piece-unity-config.yaml の変更に合わせて以下のように変更。
これを忘れていてハマったのは内緒。

             $right = &new Piece_Right(
-                $config->getConfiguration('KernelConfigurator', 'validationConfigDirectory'),
-                $config->getConfiguration('KernelConfigurator', 'validationCacheDirectory'),
+                $config->getConfiguration('Configurator_Validation', 'configDirectory'),
+                $config->getConfiguration('Configurator_Validation', 'cacheDirectory'),
                 array(&$this, 'getFieldValueFromContext')
             );