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

Add helper trait to provide type-hinting for zend-view #102

Merged
merged 12 commits into from
Nov 18, 2019
Merged
Show file tree
Hide file tree
Changes from 10 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 23 additions & 0 deletions docs/book/view-helpers.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,29 @@ displaying translated content.
See the [zend-view helpers documentation](http://framework.zend.com/manual/current/en/modules/zend.view.helpers.html#zend-view-helpers)
for more information.

## IDE auto-completion in templates
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think, we should set the entire section as a blockquote.

> ### IDE auto-completion in templates
>
> The `Zend\I18n\View\Helper\HelperTrait` trait can be used to provide...

The headline is then marked up with ###.


The `Zend\I18n\View\Helper\HelperTrait` trait can be used to provide
auto-completion for modern IDEs. It defines the aliases of the view helpers in a
DocBlock as `@method` tags.

### Usage
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This headline gets the level of 4.


In order to allow auto-completion in templates, `$this` variable should be
type-hinted via a DocBlock at the top of your template. It is recommended that
you always add the `Zend\View\Renderer\PhpRenderer` as the first type, so that
the IDE can auto-suggest the default view helpers from `zend-view`. Next, chain
the `HelperTrait` from `zend-i18n` with a pipe symbol (a.k.a. vertical bar) `|`:
```php
/**
* @var Zend\View\Renderer\PhpRenderer|Zend\I18n\View\Helper\HelperTrait $this
*/
```

You may chain as many `HelperTrait` traits as you like, depending on view
helpers from which Zend Framework component you are using and would like to
provide auto-completion for.

## CurrencyFormat Helper

The `CurrencyFormat` view helper can be used to simplify rendering of localized
Expand Down
37 changes: 37 additions & 0 deletions src/View/HelperTrait.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
<?php
/**
* @see https://github.com/zendframework/zend-i18n for the canonical source repository
* @copyright Copyright (c) 2018 Zend Technologies USA Inc. (http://www.zend.com)
* @license https://github.com/zendframework/zend-i18n/blob/master/LICENSE.md New BSD License
*/

thexpand marked this conversation as resolved.
Show resolved Hide resolved
namespace Zend\I18n\View;

use IntlDateFormatter;

// @codingStandardsIgnoreStart
thexpand marked this conversation as resolved.
Show resolved Hide resolved

/**
* Helper trait for auto-completion of code in modern IDEs.
*
* The trait provides convenience methods for view helpers,
* defined by the zend-i18n component. It is designed to be used
* for type-hinting $this variable inside zend-view templates via doc blocks.
*
* The base class is PhpRenderer, followed by the helper trait from
* the zend-i18n component. However, multiple helper traits from different
* Zend Framework components can be chained afterwards.
*
* @example @var \Zend\View\Renderer\PhpRenderer|\Zend\I18n\View\HelperTrait $this
*
* @method string currencyFormat(float $number, string|null $currencyCode = null, bool|null $showDecimals = null, string|null $locale = null, string|null $pattern = null)
* @method string dateFormat(\DateTime|int|array $date, int $dateType = IntlDateFormatter::NONE, int $timeType = IntlDateFormatter::NONE, string|null $locale = null, string|null $pattern = null)
* @method string numberFormat(int|float $number, int|null $formatStyle = null, int|null $formatType = null, string|null $locale = null, int|null $decimals = null, array|null $textAttributes = null)
* @method string plural(array|string $strings, int $number)
* @method string translate(string $message, string|null $textDomain = null, string|null $locale = null)
* @method string translatePlural(string $singular, string $plural, int $number, string|null $textDomain = null, string|null $locale = null)
*/
trait HelperTrait
{
}
// @codingStandardsIgnoreEnd