Skip to content
This repository has been archived by the owner on Jan 30, 2020. It is now read-only.

Ensure translator_plugins config is honored in non-zend-mvc contexts #74

Conversation

weierophinney
Copy link
Member

Per https://discourse.zendframework.com/t/validatormanager-not-calling-custom-validator-factory/109/5?u=matthew the translator_plugins config key is not honored currently unless the application is within a zend-mvc context. This is due to the fact that Zend\I18n\Module wires configuration for the Zend\ModuleManager\Listener\ServiceListener in order to push merged service configuration into the plugin during bootstrap; no similar logic is available when not in a zend-mvc context, however.

This patch fixes that situation by modifying the LoaderPluginManagerFactory to do the following:

  • If a ServiceListener service exists, it returns the plugin manager immediately (old behavior).
  • Otherwise, it checks for the config service, and, if found, a translator_plugins key with an array value. When found, it feeds that value to a Zend\ServiceManager\Config instance and uses that to configure the plugin manager before returning it.

Per https://discourse.zendframework.com/t/validatormanager-not-calling-custom-validator-factory/109/5?u=matthew
the `translator_plugins` config key is not honored currently unless the
application is within a zend-mvc context. This is due to the fact that
`Zend\I18n\Module` wires configuration for the
`Zend\ModuleManager\Listener\ServiceListener` in order to push merged
service configuration into the plugin during bootstrap; no similar logic
is available when not in a zend-mvc context, however.

This patch fixes that situation by modifying the
`LoaderPluginManagerFactory` to do the following:

- If a `ServiceListener` service exists, it returns the plugin manager
  immediately (old behavior).
- Otherwise, it checks for the `config` service, and, if found, a
  `translator_plugins` key with an array value. When found, it feeds that value
  to a `Zend\ServiceManager\Config` instance and uses that to configure
  the plugin manager before returning it.
@weierophinney
Copy link
Member Author

Test failures are all on lowest, due to zend-servicemanager test expectation updates to use PHPUnit 5.7/6.0 expectException syntax within the LoaderPluginManagerCompatibilityTest, which is unrelated. When run manually against an earlier zend-servicemanager version, the new tests pass.

weierophinney added a commit that referenced this pull request May 17, 2017
@weierophinney weierophinney merged commit 98996fa into zendframework:master May 17, 2017
weierophinney added a commit that referenced this pull request May 17, 2017
@weierophinney weierophinney deleted the hotfix/translator_plugins-service-config branch May 17, 2017 16:09
@weierophinney weierophinney added this to the 2.7.4 milestone May 17, 2017
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant