All notable changes to this project will be documented in this file, in reverse chronological order by release.
#170 ensures that variables referenced in compact() operations are properly
initialized, fixing an error that occures in PHP 7.3.
#169 adds zendframework/zend-json as a required dependency, as it is referenced in multiple locations within the package.
#156 adds missing @method annotations to the HeadMeta helper.
#135 adds support for PHP 7.2.
#138 adds support for
the HTML5 "as" attribute to the HeadLink helper. This can be used to help
prioritize resource loading.
#139 adds two new
methods to the Zend\View\Helper\Gravatar class: setAttributes() and
getAttributes().
placeholder() helper to no longer render a prefix or postfix if
no items are available in the container.Zend\View\Helper\Gravatar methods setAttribs() and getAttribs() in favor
of the new methods setAttributes() and getAttributes(), respectively.Navigation helper class to document the various proxy methods it allows via
method overloading via @method annotations.#123 updates the
HelperPluginManager such that it no longer injects a translator in a helper
if one is already present.
#125 provides an update
to the PhpRenderer:render() method such that it will now catch not only
Exception instances, but also PHP 7 Throwable instances, and properly
cleanup the output buffers when it does.
#121 provides a fix to
ensure that content generated on a previous execution of PhpRenderer::render()
is never re-used.
#89 updates the
HeadScript and InlineScript view helpers to whitelist the id attribute
as an optional attribute.
#96 updates the
HeadScript, HeadLink, and InlineScript view helpers to whitelist the
crossorigin and integrity attributes as optional attributes.
#64 adds a new Asset
view helper. This helper uses the following configuration to map a named asset
to the actual file to serve:
'view_helper_config' => [
'asset' => [
'resource_map' => [
'css/style.css' => 'css/style-3a97ff4ee3.css',
'js/vendor.js' => 'js/vendor-a507086eba.js',
],
],
],
This can also be automated via tools such as gulp-rev and grunt-rev by using
the rev-manifest.json each creates directly within your configuration:
'view_helper_config' => [
'asset' => [
'resource_map' => json_decode(file_get_contents('path/to/rev-manifest.json'), true),
],
],
The benefit of this approach is that it allows your view scripts to reference a static asset name, while integrating with your JS and CSS build tools.
default or
navigation containers (documentation specified default, but usage only
allowed navigation previously). When default is specified, the
Zend\Navigation\Navigation service will be used for the container; if
navigation is used, that service will be pulled instead (which is usually an
alias for the Zend\Navigation\Navigation service anyways).$partial argument, as that key
is no longer used.HeadMeta helper renders the <meta charset> tag, ensuring it is the first
rendered. As long as the HeadMeta helper is called early in your markup, this
should ensure it is within the first 1024 characters, ensuring your document
validates.@method annotation for the Placeholder view helper to use the correct case,
fixing issues with method completion in IDEs.PhpRendererStrategy whereby absence of a response instance in the
ViewEvent would lead to a fatal error.templatemap_generator.php, which is available in
vendor/bin/templatemap_generator.php once installed. This script replaces
the original present in the zendframework/zendframework package, and
simplifies it for the most common use case. Usage is: $ cd module/ModuleName/config
$ ../../../vendor/bin/templatemap_generator.php ../view > template_map.config.php
You can also provide a list of files via globbing or usage of find after the
initial directory argument; if provided that list of files will be used to
generate the map. (The directory argument is then used to strip the path
information when generating the template name.)
loop()
method to the partialLoop() helper, allowing the ability to chain setters
with rendering:
$this->partialLoop()->setObjectKey('foo')->loop('partial', $data)HelperPluginManager.async attribute within the headScript helper.headScript helper to allow empty attribute types to render as keys only when
using an HTML5 doctype.url()
helper so that it can work with either the zend-mvc v2 router subcomponent or
zend-router.Zend\View\Helper\TranslatorAwareTrait, which provides implementation for
Zend\I18n\Translator\TranslatorAwareInterface, and allowed removal of
duplicated implementations in several helpers.Zend\I18n\Translator\TranslatorAwareInterface by allowing
helpers to duck type the interface to receive a translator during
instantiation; this allows such helpers to work even when zend-i18n is not
installed. The following helpers were updated to duck type the interface
instead of implement it explicitly:
FlashMessengerHeadTitleNavigation helpersHelperPluginManager now implements an EventManagerAware initializer.Zend\View\Helper\Navigation\AbstractHelper now contains logic to ensure
that when an EventManager instance is lazy-loaded, it composes a
SharedEventManager.FlashMessenger factory now correctly pulls the config service, not
the Config service (former is both backwards- and forwards compatible).Navigation\PluginManager::__construct() to ensure it properly pulls and
injects the application container into navigation helpers, under both
zend-servicemanager v2 and v3. Additionally, when lazy-instantiating the
Navigation\PluginManager, the Navigation helper now passes the composed
service manager instance to its constructor.Navigation\PluginManager to ensure it is backwards compatible
with zend-servicemanager v2, including:
HelperPluginManager::injectTranslator() to return
early if no container is provided (fixing an issue with navigation
helpers introduced in 2.6.0).HelperPluginManager to ensure it is backwards compatible
with zend-servicemanager v2.Breadcrumbs and Menu navigation helpers,
renderPartialWithParams(array $params = [], $container = null, $partial = null).
This method allows passing parameters to the navigation partial to render,
just as you would when using the partial() view helper.itemprop attribute in the headLink() view helper.PhpRenderer::render() to no longer lazy-instantiate a FilterChain;
content filtering is now only done if a FitlerChain is already
injected in the renderer.ServerUrl detects and emits the port when port-forwarding is in
effect.ServerUrl detects and emits the port when port-forwarding is in
effect.