Logo
  • NOTES
  • BLOG
  • OSS
  • TALKS
  • WIKI
  • ABOUT
GITHUB

Nette: napovídání nad template v presenteru nebo controlu

Tags
nettedependency injection
Cover
Date
2018/10/19

Jak na napovídání nad objektem template v presenteru nebo controlu?

Každý Nette vývojář se již setkal s proměnnou $template v presenterech nebo controlech. Data do šablony vkládáme sami, ale objekt template obsahuje pár předdefinovaných properties. Ty se tam dostanou z TemplateFactory.

No jo, ale PHPStorm nám žadné klíče, kromě definovaných interfacem ITemplate, nenapovídá. Jak toho tedy docílit?

TemplateProperty

Vytvořme třídu TemplateProperty, která bude obsahovat pouze anotace a budě dědit od Nette\Bridges\ApplicationLatte\Template.

Base{Control, Presenter}

V našem BaseControl a BasePresenter definujme phpdoc @property-read.

<?php declare(strict_types = 1);

namespace App\UI\Control;

use App\Model\Latte\TemplateProperty;

/**
 * @property-read TemplateProperty $template
 */
abstract class BaseControl extends Control
{
}

PHPStorm

Každá třída dědící od BaseControl nebo BasePresenter bude nyní PHPStorm správně napovídat.

image

Related

Až po dopsání jsem si všiml, že David vydal podobný článek.

  • https://blog.nette.org/phpstorm-and-code-completion-for-this-template
  • https://phpfashion.com/phpstorm-a-napovidani-nad-this-template

Jak řešíte napovídání u templates? Podělte se do diskuze.

Logo

© f3l1x

GitHubLinkedInXYouTube
<?php declare(strict_types = 1);

namespace App\Model\Latte;

use App\UI\BasePresenter;
use App\UI\Control\BaseControl;
use Nette\Bridges\ApplicationLatte\Template;
use Nette\Security\User;

/**
 * @property-read User $user
 * @property-read BasePresenter $presenter
 * @property-read BaseControl $control
 * @property-read string $baseUri
 * @property-read string $basePath
 * @property-read array $flashes
 */
final class TemplateProperty extends Template
{
}